XAsyncOp
表示异步提供程序的操作代码。
语法
enum class XAsyncOp : uint32_t
{
Begin,
DoWork,
GetResult,
Cancel,
Cleanup
}
常量
常量 | 说明 |
---|---|
Begin | 在调用 XAsyncBegin 时,将使用此操作代码调用异步提供程序。 如果实现了此操作代码,异步提供程序应会启动其异步工作,方法是调用 XAsyncSchedule 或启动外部异步进程,如重叠的 I/O。 注意 为此操作代码执行的异步工作不得阻止线程。 |
DoWork | 当调用了 XAsyncSchedule 来安排工作时,将使用此操作代码调用异步提供程序。 如果实现了此操作代码,异步提供程序应会执行其异步工作,然后调用 XAsyncComplete,在 requiredBufferSize 中指定数据有效负载的大小。 如果需要执行额外的工作,异步提供程序可以安排这些工作,然后调用 XAsyncComplete ,在 result 中指定错误代码 E_PENDING。 |
GetResult | 异步调用完成后,将使用此操作代码调用异步提供程序,用户需要获取生成的数据有效负载。 已验证了 XAsyncProviderData 的 buffer 和 bufferSize 字段。 |
Cancel | 在应该取消异步工作时,将使用此操作代码调用异步提供程序。 异步提供程序应取消所有异步工作,然后调用 XAsyncComplete,在 result 中指定错误代码 E_ABORT。 |
Cleanup | 当异步调用已完成或已取消,并且可以清理上下文中的数据时,将使用此操作代码调用异步提供程序。 |
备注
异步提供程序的 XAsyncProvider 回调函数将被反复调用,并且异步提供程序为每次调用执行的操作是由为每次调用指定的操作代码来决定的。
XAsyncOp
表示可由异步提供程序实现的操作代码。
异步提供程序应仅实现 XAsyncOp
中执行异步工作所需的那些操作代码。 例如,执行无需清理的、不可取消的异步 I/O 工作的异步提供程序只需要实现 XAsyncOp::GetResult
。
有关通过 XAsyncOp
实现 DoWork
、GetResult
和 Cleanup
操作代码的异步提供程序的示例,请参阅异步编程模型中的“异步库”部分。
要求
头文件: XAsyncProvider.h
支持平台:Windows、Xbox One 系列主机和 Xbox Series 主机