次の方法で共有


XAsyncBegin

XAsyncBlock を初期化し、非同期プロバイダーによる非同期作業を開始します。

構文

HRESULT XAsyncBegin(  
         XAsyncBlock* asyncBlock,  
         void* context,  
         const void* identity,  
         const char* identityName,  
         XAsyncProvider* provider  
)  

パラメーター

asyncBlock _Inout_
型: XAsyncBlock*

非同期呼び出しに対するデータを保持する XAsyncBlock へのポインター。

context _In_opt_
型: void*

省略可能。 XAsyncProvider コールバック関数に渡された XAsyncProviderData オブジェクトに格納されるコンテキスト ポインター。

identity _In_opt_
型: void*

省略可能。 非同期呼び出しの識別に使用できる任意のトークンへのポインター。

identityName _In_opt_
型: char*

省略可能。 非同期呼び出しを提供する関数の名前を指定する文字列。 通常、このパラメーターの値は、__FUNCTION__ コンパイラ マクロに設定されます。

provider _In_
型: XAsyncProvider*

非同期呼び出しに対して実行する XAsyncProvider コールバック関数へのポインター。

戻り値

型: HRESULT

正常に実行された場合は S_OK が返され、それ以外の場合はエラー コードが返されます。 エラー コードの一覧については、「エラー コード」を参照してください。

解説

XAsyncBegin は、非同期プロバイダーが非同期作業を開始することを示すために呼び出されます。 XAsyncBegin が呼び出されると、XAsyncGetResult などの他の XAsyncProvider 関数により意味のあるデータが提供されます。

XAsyncBegin が呼び出されると、XAsyncProviderop パラメーターに XAsyncOp::Begin を指定して、provider で指定されたコールバック関数が呼び出されます。 コールバック関数がこの操作コードを実装する場合は、XAsyncSchedule を呼び出すか、または外部的な手段を通じて非同期処理を開始する必要があります。 XAsyncBegin が返された後、コールバック関数はシステムで定義されたスレッドでの非同期処理を開始したと見なされます。

注意

プロバイダーで指定されたコールバック関数は、XAsyncBegin 呼び出しチェーンで同期的に処理されます。 コールバック関数によって実行される非同期処理は、スレッドをブロックしてはなりません。

identity パラメーターおよび identityName パラメーターを使用して、コールバック関数と一致しない XAsyncOp::Begin 呼び出しと XAsyncOp::GetResult 呼び出しを識別および管理できます。 通常、identity の値は XAsyncBegin を呼び出した関数の関数ポインターに設定され、identityName の値は __FUNCTION__ のコンパイラ マクロに設定されます。

要件

ヘッダー: XAsyncProvider.h

ライブラリ: xgameruntime.lib

サポートされているプラットフォーム: Windows、Xbox One ファミリー本体、Xbox Series 本体

関連項目

XAsyncProvider のメンバー
XAsyncProviderData
XAsyncProvider
XAsyncGetResult
非同期プログラミング モデル