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

# 清理任务队列示例

> 演示如何使用 XTaskQueueTerminate 终止任务队列，持续分派手动端口直到 XTaskQueueDispatch 返回 false，然后关闭句柄。

本主题提供了一个如何在不再需要任务队列时对其进行清理以避免资源泄漏的示例。但是，任务队列不能立即释放。必须先终止它，刷新以确保已入队的所有内容都已运行，然后再释放。

[终止调用](https://docs.xbox.com/zh-CN/reference/system/xtaskqueue/functions/xtaskqueueterminate.md)可以设置为等待或立即返回。如果回调不等待，则可以选择在终止完全完成时收到通知。如果存在任何[手动端口](https://docs.xbox.com/zh-CN/reference/system/xtaskqueue/enums/xtaskqueuedispatchmode.md)，则必须继续对其进行分派，直到[分派函数](https://docs.xbox.com/zh-CN/reference/system/xtaskqueue/functions/xtaskqueuedispatch.md)返回。

```c++ theme={null}
XTaskQueueTerminate(taskQueue, false, nullptr, nullptr);
bool result;
do
{
    result = XTaskQueueDispatch(taskQueue, XTaskQueuePort::Completion, INFINITE);
} while (result == true);
XTaskQueueCloseHandle(taskQueue);
```

此示例通过 [XTaskQueueTerminate](https://docs.xbox.com/zh-CN/reference/system/xtaskqueue/functions/xtaskqueueterminate.md) 的等待参数终止任务队列但不等待。`terminate` 调用会向每个端口添加一个回调，以检测队列何时清空。为了处理这种情况和任何先前入队的回调，会持续调用 `dispatch`，直到它返回 `false`。

## 参考 API 文档

* [XTaskQueue (API 内容)](https://docs.xbox.com/zh-CN/reference/system/xtaskqueue/xtaskqueue_members.md)
  * 函数
    * [xtaskqueueterminate](https://docs.xbox.com/zh-CN/reference/system/xtaskqueue/functions/xtaskqueueterminate.md)
    * [xtaskqueuedispatch](https://docs.xbox.com/zh-CN/reference/system/xtaskqueue/functions/xtaskqueuedispatch.md)

## 另请参阅

[XTaskQueue 库概述](https://docs.xbox.com/zh-CN/build/core-features/common/async/async-libraries/async-library-xtaskqueue.md)

[创建任务队列（示例）](https://docs.xbox.com/zh-CN/build/core-features/common/async/async-libraries/async-library-xtaskqueue-example-create-task-queue.md)

[分派任务队列（示例）](https://docs.xbox.com/zh-CN/build/core-features/common/async/async-libraries/async-library-xtaskqueue-example-dispatch-task-queue.md)

[设计任务队列](https://docs.xbox.com/zh-CN/build/core-features/common/async/async-task-queue-design.md)

[XTaskQueue](https://docs.xbox.com/zh-CN/reference/system/xtaskqueue/xtaskqueue_members.md)


## Related topics

- [用于异步任务编程的 XAsync 库](https://docs.xbox.com/zh-CN/build/core-features/common/async/async-libraries/index.md)
- [创建任务队列示例](https://docs.xbox.com/zh-CN/build/core-features/common/async/async-libraries/async-library-xtaskqueue-example-create-task-queue.md)
- [分派任务队列示例](https://docs.xbox.com/zh-CN/build/core-features/common/async/async-libraries/async-library-xtaskqueue-example-dispatch-task-queue.md)
- [XTaskQueue 库概述](https://docs.xbox.com/zh-CN/build/core-features/common/async/async-libraries/async-library-xtaskqueue.md)
- [XTaskQueueDispatch](https://docs.xbox.com/zh-CN/reference/system/xtaskqueue/functions/xtaskqueuedispatch.md)
