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

# 単純なタスクの実行例

> XAsyncBlock とワーク コールバックをセットアップして XAsyncRun でカスタム非同期タスクを開始し、XAsyncGetStatus で戻り値を読み取る方法を説明します。

このトピックでは、単純なユーザー タスクを実行する方法の例を示します。単純なタスクは、[XAsyncRun](https://docs.xbox.com/ja-jp/reference/system/xasync/functions/xasyncrun.md) 関数を使用して開始できます。この関数は、非同期ブロックを入力として受け取り、さらにワーク コールバックをファンクターまたはラムダ入力として実装する必要があります。非同期ブロックは、使用するタスク キューと、必要に応じて完了コールバックを指定することを覚えておいてください。

```c++ theme={null}
XAsyncBlock* async = new XAsyncBlock{};
async->queue = taskQueue;
async->context = contextData;
async->callback = 
    [](XAsyncBlock* async)
    {
        // The optional completion callback.
        delete async;
    }

XAsyncRun(async,
    [](XAsyncBlock* async)->HRESULT
    {
        // The work callback is implemented here.
        return S_OK;
    });
```

この例では、`XAsyncRun` を使用してカスタムの単純な非同期タスクを開始しています。非同期ブロックには、使用するタスク キューと完了コールバックが含まれます。`XAsyncRun` にはワーク コールバックが必要で、戻り値があります。この戻り値は、後で [XAsyncGetStatus](https://docs.xbox.com/ja-jp/reference/system/xasync/functions/xasyncgetstatus.md) の呼び出しから返されます。内部的に、`XAsyncRun` には、指定されたワーク コールバックのエンキュー、非同期ブロック内の完了コールバックのエンキュー、およびそのプロセスに対するその他の状態変化を処理するための単純な非同期プロバイダーがセットアップされています。つまり、単純な非同期タスクを実行するためにこれ以上のコードは必要ありません。非同期ブロックをセットアップして `XAsyncRun` を呼び出すだけです。

## リファレンス 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)
    * [XAsyncGetStatus](https://docs.xbox.com/ja-jp/reference/system/xasync/functions/xasyncgetstatus.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)

[Microsoft Game Development Kit (GDK) API タスクの実行 (例)](https://docs.xbox.com/ja-jp/build/core-features/common/async/async-libraries/async-library-xasync-example-run-gdk-task.md)

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


## Related topics

- [Microsoft Game Development Kit (GDK) API タスクの実行](https://docs.xbox.com/ja-jp/build/core-features/common/async/async-libraries/async-library-xasync-example-run-gdk-task.md)
- [タスクの実行](https://docs.xbox.com/ja-jp/services/playfab/api-references/rest/admin/scheduled-task/run-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/async-library-xasync.md)
- [非同期タスク プログラミング向け XAsync ライブラリ](https://docs.xbox.com/ja-jp/build/core-features/common/async/async-libraries/index.md)
