跳转到主要内容

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 函数定期检查异步调用是否已完成,然后根据需要使用 XAsyncGetResult 和 XAsyncGetResultSize 获取已完成任务的结果。 有关完成回调的详细信息,请参阅 XAsyncCompletionRoutine。

实现 XAsyncBlock

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

Requirements

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

Conceptual documentation

See also

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