> ## 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/ja-jp/reference/system/xtaskqueue/functions/xtaskqueueterminate.md) は、待機するように設定するか、すぐに戻るように設定できます。コールバックが待機しない場合は、終了が完全に完了したときに通知を受けるかどうかを任意に指定できます。[手動ポート](https://docs.xbox.com/ja-jp/reference/system/xtaskqueue/enums/xtaskqueuedispatchmode.md) がある場合は、[ディスパッチ関数](https://docs.xbox.com/ja-jp/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/ja-jp/reference/system/xtaskqueue/functions/xtaskqueueterminate.md) の wait パラメーターを使用して、タスク キューを終了させますが待機はしません。`terminate` の呼び出しは、キューが空になった時点を検出するためのコールバックを各ポートに 1 つ追加します。このコールバックと、それ以前にエンキューされていたコールバックを処理するために、`dispatch` は `false` が返されるまで継続的に呼び出されます。

## リファレンス API ドキュメント

* [XTaskQueue (API 目次)](https://docs.xbox.com/ja-jp/reference/system/xtaskqueue/xtaskqueue_members.md)
  * 関数
    * [xtaskqueueterminate](https://docs.xbox.com/ja-jp/reference/system/xtaskqueue/functions/xtaskqueueterminate.md)
    * [xtaskqueuedispatch](https://docs.xbox.com/ja-jp/reference/system/xtaskqueue/functions/xtaskqueuedispatch.md)

## 関連項目

[XTaskQueue ライブラリの概要](https://docs.xbox.com/ja-jp/build/core-features/common/async/async-libraries/async-library-xtaskqueue.md)

[タスク キューの作成 (例)](https://docs.xbox.com/ja-jp/build/core-features/common/async/async-libraries/async-library-xtaskqueue-example-create-task-queue.md)

[タスク キューのディスパッチ (例)](https://docs.xbox.com/ja-jp/build/core-features/common/async/async-libraries/async-library-xtaskqueue-example-dispatch-task-queue.md)

[タスク キューの設計](https://docs.xbox.com/ja-jp/build/core-features/common/async/async-task-queue-design.md)

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


## Related topics

- [非同期タスク プログラミング向け XAsync ライブラリ](https://docs.xbox.com/ja-jp/build/core-features/common/async/async-libraries/index.md)
- [XBOX PC Remote Tools クイック スタート ガイド](https://docs.xbox.com/ja-jp/tools/tools-pc/xbox-pc-remote-tools/quickstart.md)
- [クイックスタート (Windows) - Party とマルチプレイヤー](https://docs.xbox.com/ja-jp/services/playfab/sdks/unified-sdk/quickstart-windows-party.md)
- [ソーシャル マネージャーの概要](https://docs.xbox.com/ja-jp/services/xbox-services/community/social-manager/live-social-manager-overview.md)
- [マルチプレイヤー セッションの詳細トピック](https://docs.xbox.com/ja-jp/services/xbox-services/multiplayer/mpsd/concepts/live-mpsd-details.md)
