> ## 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-TW/reference/system/xtaskqueue/functions/xtaskqueueterminate.md)可以設定為等待或
立即傳回。如果不等待，可以選擇性地指定回呼，
以便在終止完全結束時收到通知。如果有
任何[手動連接埠](https://docs.xbox.com/zh-TW/reference/system/xtaskqueue/enums/xtaskqueuedispatchmode.md)，就必須持續分派它們，直到
[分派函式](https://docs.xbox.com/zh-TW/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-TW/reference/system/xtaskqueue/functions/xtaskqueueterminate.md) 的 wait 參數設定為不等待。
`terminate` 呼叫會在每個連接埠新增一個回呼，以偵測佇列何時
清空。為了處理此回呼以及任何先前加入佇列的回呼，
會持續呼叫 `dispatch`，直到它傳回 `false` 為止。

## 參考 API 文件

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

## 另請參閱

[XTaskQueue 程式庫概觀](https://docs.xbox.com/zh-TW/build/core-features/common/async/async-libraries/async-library-xtaskqueue.md)

[建立工作佇列 (範例)](https://docs.xbox.com/zh-TW/build/core-features/common/async/async-libraries/async-library-xtaskqueue-example-create-task-queue.md)

[分派工作佇列 (範例)](https://docs.xbox.com/zh-TW/build/core-features/common/async/async-libraries/async-library-xtaskqueue-example-dispatch-task-queue.md)

[設計工作佇列](https://docs.xbox.com/zh-TW/build/core-features/common/async/async-task-queue-design.md)

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


## Related topics

- [用於非同步工作程式設計的 XAsync 程式庫](https://docs.xbox.com/zh-TW/build/core-features/common/async/async-libraries/index.md)
- [建立工作佇列範例](https://docs.xbox.com/zh-TW/build/core-features/common/async/async-libraries/async-library-xtaskqueue-example-create-task-queue.md)
- [分派工作佇列範例](https://docs.xbox.com/zh-TW/build/core-features/common/async/async-libraries/async-library-xtaskqueue-example-dispatch-task-queue.md)
- [XTaskQueue 程式庫概觀](https://docs.xbox.com/zh-TW/build/core-features/common/async/async-libraries/async-library-xtaskqueue.md)
- [操作說明：建立手動工作佇列](https://docs.xbox.com/zh-TW/build/core-features/common/async/async-task-queue-design-howto/creating-manual-task-queue.md)
