> ## Documentation Index
> Fetch the complete documentation index at: https://devdocs.xbox.com/llms.txt
> Use this file to discover all available pages before exploring further.

# XNetworkingUnregisterPreferredLocalUdpMultiplayerPortChanged

> XNetworkingUnregisterPreferredLocalUdpMultiplayerPortChanged

# XNetworkingUnregisterPreferredLocalUdpMultiplayerPortChanged

取消注册通过 [XNetworkingRegisterPreferredLocalUdpMultiplayerPortChanged](/reference/networking/xnetworking/functions/xnetworkingregisterpreferredlocaludpmultiplayerportchanged) 注册的回调函数。

## 语法

```cpp theme={null}
bool XNetworkingUnregisterPreferredLocalUdpMultiplayerPortChanged(
         XTaskQueueRegistrationToken token,
         bool wait
)
```

### 参数

*token*   \_In\_\
类型：[XTaskQueueRegistrationToken](/reference/system/xtaskqueue/structs/xtaskqueueregistrationtoken)

从 [XNetworkingRegisterPreferredLocalUdpMultiplayerPortChanged](/reference/networking/xnetworking/functions/xnetworkingregisterpreferredlocaludpmultiplayerportchanged) 返回的令牌。

*wait*   \_In\_\
类型：bool

指示是否阻塞直到所有挂起的回调完成。

### 返回值

类型：bool

如果 *wait* 为 false 且取消注册调用处于挂起状态，则返回 false。否则返回 true。

## 备注

<Note>仅当 *wait* 参数为 false 时，此函数才能在时间敏感的线程上安全调用。有关详细信息，请参阅[时间敏感线程](https://learn.microsoft.com/gaming/gdk/docs/gdk-dev/console-dev/overviews/threads/time-sensitive-threads)。</Note>

此函数执行以下操作：

* 从已注册的回调集合中移除与该令牌相关联的回调。
* 如果没有针对该回调令牌正在执行的回调，则该调用返回 true。
* 如果有回调正在执行且 *wait* 为 true，则该调用阻塞，直到正在执行的回调完成。
* 如果有回调正在执行且 *wait* 为 false，则该调用不阻塞，但会返回 false。当该令牌的回调完成后，令牌将被自动取消注册。

<Note>如果 *wait* 为 true，则不应在 [XNetworkingPreferredLocalUdpMultiplayerPortChangedCallback](/reference/networking/xnetworking/functions/xnetworkingpreferredlocaludpmultiplayerportchangedcallback) 内部调用此函数，否则会导致死锁。</Note>

此机制允许以下编码模式：

* 你可以在取消注册时进行阻塞，以确保在取消注册调用之后不再调用你的回调。
* 你可以选择不阻塞。如果你需要在删除数据之前确保回调已完成，则可以定期以 *wait* 为 false 调用此函数。当它最终返回 true 时，你的所有回调都已完成，你就可以删除状态了。
* 如果你的回调不关心它是否在取消注册调用期间被调用，则可以为 *wait* 传入 false 并忽略返回值。

## 要求

**头文件：** XNetworking.h

**库：** xgameruntime.lib

**支持的平台：** Windows、XBOX One 系列主机和 XBOX Series 主机

## 概念文档

* [时间敏感线程](https://learn.microsoft.com/gaming/gdk/docs/gdk-dev/console-dev/overviews/threads/time-sensitive-threads)

## 另请参阅

[XNetworkingQueryPreferredLocalUdpMultiplayerPort](/reference/networking/xnetworking/functions/xnetworkingquerypreferredlocaludpmultiplayerport)\
[首选本地 UDP 多人游戏端口网络 API](/build/console-features/networking/game-mesh/preferred-local-udp-multiplayer-port-networking)\
[XNetworking](/reference/networking/xnetworking/xnetworking_members)


## Related topics

- [XNetworkingRegisterPreferredLocalUdpMultiplayerPortChanged](/zh-CN/reference/networking/xnetworking/functions/xnetworkingregisterpreferredlocaludpmultiplayerportchanged.md)
- [XNetworking](/zh-CN/reference/networking/xnetworking/xnetworking_members.md)
- [XTaskQueueRegistrationToken](/zh-CN/reference/system/xtaskqueue/structs/xtaskqueueregistrationtoken.md)
- [面向 GDK 的 Unity C# API 包装器](/zh-CN/build/gdk-and-engines/unity/unity-api-wrappers.md)
- [XNetworkingPreferredLocalUdpMultiplayerPortChangedCallback](/zh-CN/reference/networking/xnetworking/functions/xnetworkingpreferredlocaludpmultiplayerportchangedcallback.md)
