Skip to main content

XAsyncBlock

表示异步调用的生存期。

Syntax

Members

queue
类型:XTaskQueueHandle
可选。异步调用(以及可选的 callback 中指定的完成回调)的任务队列句柄。如果设置为 null,异步调用将尝试使用进程任务队列。如果进程任务队列也设置为 null,则异步调用将失败并返回 E_NO_TASK_QUEUE context
类型:void*
可选。指向传递给完成回调的信息的指针。 callback
类型:XAsyncCompletionRoutine*
调用完成时将调用的可选回调。 internal
类型:unsigned char[sizeof(void*) * 4]
保留供内部使用。

Remarks

XAsyncBlock 结构表示异步调用的生存期。使用 XAsyncBlock 首先启动一个异步调用,并为该调用提供可选的完成回调。之后,可以使用 XAsyncBlock 作为该特定调用调用的句柄。启动异步调用时,它将被提交到任务队列以供执行。任务队列可用于确定哪个线程执行异步调用以及哪个线程(如果指定)调用完成回调。你不必创建任务队列即可调用异步调用。如果在 queue 中未指定任务队列,则默认使用进程任务队列。通常,进程任务队列将异步调用分派到系统线程池,完成回调会在启动异步调用的线程可提醒时在该线程上调用。有关任务队列分派模式的详细信息,请参阅异步任务队列设计
启动异步调用后,不要修改该异步调用的 XAsyncBlock 中的任何参数。

完成回调

可以在 callback 中选择性地指定指向回调函数的指针,为异步调用提供完成回调。完成回调是在异步调用完成后执行的回调函数。可以通过在 context 中指定表示完成回调信息的指针,向完成回调提供特定于上下文的数据。 如果未在 callback 中指定完成回调,可以使用 XAsyncGetStatus 函数定期检查异步调用是否已完成,然后根据需要使用 XAsyncGetResultXAsyncGetResultSize 获取已完成任务的结果。 有关完成回调的详细信息,请参阅 XAsyncCompletionRoutine

实现 XAsyncBlock

可以使用 XAsyncProvider 通过 XAsyncBlock 实现自己的异步功能,然后使用 XTaskQueue 函数调用该功能。也可以通过调用 XAsyncRun 来调用异步调用,这是一个帮助程序函数,它在内部使用 XAsyncProvider 运行和跟踪由另一个帮助程序函数 XAsyncWork 指定的回调函数。有关使用 XAsyncProviderXAsyncBlock 实现自己的异步功能的详细信息,请参阅异步编程模型 在异步调用的整个生存期内,XAsyncBlock 必须保留在内存中。但是,如果 XAsyncBlock 是动态分配的,则可以在异步调用的完成回调内安全删除它。

Requirements

头文件: XAsync.h 受支持的平台: Windows、XBOX One 系列主机和 XBOX Series 主机

Conceptual documentation

See also

XAsync Members
XAsyncProvider Members
异步编程模型
最后修改于 2026年8月24日