> ## 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.

# Microsoft Game Development Kit (GDK) API タスクの実行

> XAsyncBlock を使用して XUserAddAsync などの非同期 GDK API を呼び出し、完了コールバックで XUserAddResult を使用してそのデータを取得する方法を紹介します。

このトピックでは、Microsoft Game Development Kit (GDK) API タスクを実行する方法の例を示します。非同期の Microsoft Game Development Kit (GDK) API 関数は、ワーク コールバックを内部的に実装しています。ただし、非同期ブロックで指定されているタスク キューによって制御される形で実行されます。これらのメソッドを実行するには、非同期ブロックと、API に必要なパラメーターが必要です。

```c++ theme={null}
// Set up the async block and completion callback.
XAsyncBlock* async = new XAsyncBlock{};
async->queue = taskQueue;
async->context = nullptr;
async->callback = [](XAsyncBlock* async)
{
    XUserHandle newUser = nullptr;
    HRESULT result = XUserAddResult(async, &newUser);
    // Handle the completion callback.
    delete async;
};

// Start the async call.
HRESULT hr = XUserAddAsync(XUserAddOptions::None, async);
if (FAILED(hr))
{
    delete async;
}
```

このコードは、[汎用タスクの実行](https://docs.xbox.com/ja-jp/build/core-features/common/async/async-libraries/async-library-xasync-example-run-simple-task.md) 用のコードとあまり変わりません。ワーク コールバックを指定して [XAsyncRun](https://docs.xbox.com/ja-jp/reference/system/xasync/functions/xasyncrun.md) を使用する代わりに、使用したい API を呼び出します。非同期ブロックの設定方法は同じです。ここでの違いは、[XUserAddAsync](https://docs.xbox.com/ja-jp/reference/system/xuser/functions/xuseraddasync.md) には呼び出しから取得するデータがあり、そのデータは完了コールバックの中で [XUserAddResult](https://docs.xbox.com/ja-jp/reference/system/xuser/functions/xuseraddresult.md) を使って取得される点です。

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

* [XAsync (API 目次)](https://docs.xbox.com/ja-jp/reference/system/xasync/xasync_members.md)
  * 関数
    * [XAsyncRun](https://docs.xbox.com/ja-jp/reference/system/xasync/functions/xasyncrun.md)
* [xuser (API 目次)](https://docs.xbox.com/ja-jp/reference/system/xuser/xuser_members.md)
  * 関数
    * [XUserAddAsync](https://docs.xbox.com/ja-jp/reference/system/xuser/functions/xuseraddasync.md)
    * [XUserAddResult](https://docs.xbox.com/ja-jp/reference/system/xuser/functions/xuseraddresult.md)

## 関連項目

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

[非同期タスクのセットアップ (例)](https://docs.xbox.com/ja-jp/build/core-features/common/async/async-libraries/async-library-xasync-example-setup-async-task.md)

[単純なタスクの実行 (例)](https://docs.xbox.com/ja-jp/build/core-features/common/async/async-libraries/async-library-xasync-example-run-simple-task.md)

[XAsync](https://docs.xbox.com/ja-jp/reference/system/xasync/xasync_members.md)


## Related topics

- [単純なタスクの実行例](https://docs.xbox.com/ja-jp/build/core-features/common/async/async-libraries/async-library-xasync-example-run-simple-task.md)
- [非同期タスクのセットアップ例](https://docs.xbox.com/ja-jp/build/core-features/common/async/async-libraries/async-library-xasync-example-setup-async-task.md)
- [非同期タスク プログラミング向け XAsync ライブラリ](https://docs.xbox.com/ja-jp/build/core-features/common/async/async-libraries/index.md)
- [XAsync ライブラリの概要](https://docs.xbox.com/ja-jp/build/core-features/common/async/async-libraries/async-library-xasync.md)
- [タスクの実行](https://docs.xbox.com/ja-jp/services/playfab/api-references/rest/admin/scheduled-task/run-task.md)
