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
后,其他 XAsyncProvider 函数(如 XAsyncGetResult)将提供有意义的数据。
调用 XAsyncBegin
后,将调用 provider 中指定的回调函数,在 XAsyncProvider 的 op 参数中指定 XAsyncOp::Begin。 如果回调函数实现了该操作代码,则该函数应通过调用 XAsyncSchedule 或外部方式开始其异步工作。 在返回 XAsyncBegin
之后,假定回调函数已在系统定义的线程上开始异步工作。
注意
provider 中指定的回调函数在 XAsyncBegin
调用链中进行同步处理。 回调函数执行的异步工作不得阻止线程。
可使用 identity 和 identityName 参数来标识和管理与回调函数不匹配的 XAsyncOp::Begin
和 XAsyncOp::GetResult
调用。 通常,将 identity 的值设置为调用 XAsyncBegin
的函数的函数指针,并将 identityName 的值设置为 __FUNCTION__
编译器宏。
要求
头文件: XAsyncProvider.h
库:xgameruntime.lib
支持平台:Windows、Xbox One 系列主机和 Xbox Series 主机
另请参阅
XAsyncProvider 成员
XAsyncProviderData
XAsyncProvider
XAsyncGetResult
异步编程模型