単純なタスクの実行例
このトピックでは、単純なユーザー タスクを実行する方法の例を示します。 単純なタスクは、XAsyncRun 関数を使用して開始することができます。 この関数は、入力として非同期ブロックを受け取ります。また、処理コールバックをファンクタまたはラムダ入力として実装する必要があります。 非同期ブロックでは、使用するタスク キューおよびオプションの完了コールバックを指定することに注意してください。
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 の呼び出しから返されます。 内部的には、XAsyncRun
では、指定された処理コールバックのエンキュー、非同期ブロック内の完了コールバックのエンキュー、およびプロセスのその他の状態変更を処理するための単純な非同期プロバイダーがセットアップされます。 つまり、単純な非同期タスクを実行するときに追加のコードは必要ありません。非同期ブロックをセットアップして、XAsyncRun
を呼び出すだけです。