Skip to main content

XAsyncBlock

代表非同步呼叫的存留期。

語法

成員

queue
類型:XTaskQueueHandle
選擇性。非同步呼叫的工作佇列控制代碼,也可選擇性地用於 callback 中指定的完成回呼。如果設定為 null,非同步呼叫會嘗試使用處理序工作佇列。如果處理序工作佇列也設定為 null,則非同步呼叫會失敗並傳回 E_NO_TASK_QUEUE。 context
類型:void*
選擇性。指向傳遞給完成回呼之資訊的指標。 callback
類型:XAsyncCompletionRoutine*
選擇性的回呼,會在呼叫完成時叫用。 internal
類型:unsigned char[sizeof(void*) * 4]
保留供內部使用。

備註

XAsyncBlock 結構代表非同步呼叫的存留期。您可以使用 XAsyncBlock 先叫用非同步呼叫,並為該呼叫提供選擇性的完成回呼。之後,您可以將 XAsyncBlock 當作該特定呼叫叫用的控制代碼使用。當您叫用非同步呼叫時,該呼叫會提交至工作佇列以供執行。工作佇列可讓您決定由哪個執行緒執行非同步呼叫,以及由哪個執行緒叫用完成回呼 (如果有指定的話)。您不需要建立工作佇列即可呼叫非同步呼叫。如果未在 queue 中指定工作佇列,預設會使用處理序工作佇列。一般而言,處理序工作佇列會將非同步呼叫分派至系統執行緒集區,而完成回呼則會在起始非同步呼叫的執行緒處於可警示狀態時,於該執行緒上叫用。如需工作佇列分派模式的詳細資訊,請參閱非同步工作佇列設計。
叫用非同步呼叫之後,請勿修改該非同步呼叫之 XAsyncBlock 中的任何參數。

完成回呼

您可以選擇在 callback 中指定指向回呼函式的指標,為非同步呼叫提供完成回呼。完成回呼是在非同步呼叫完成之後執行的回呼函式。您可以在 context 中指定代表完成回呼資訊的指標,以將內容特定的資料提供給完成回呼。 如果您未在 callback 中指定完成回呼,可以使用 XAsyncGetStatus 函式定期檢查非同步呼叫是否已完成,然後視需要使用 XAsyncGetResult 和 XAsyncGetResultSize 從已完成的工作取得結果。 如需完成回呼的詳細資訊,請參閱 XAsyncCompletionRoutine。

實作 XAsyncBlock

您可以使用 XAsyncProvider 透過 XAsyncBlock 實作您自己的非同步功能,然後使用 XTaskQueue 函式叫用該功能。您也可以叫用 XAsyncRun 來呼叫非同步呼叫,這是一個協助程式函式,會在內部使用 XAsyncProvider 來執行和追蹤由另一個協助程式函式 XAsyncWork 指定的回呼函式。如需使用 XAsyncProvider 和 XAsyncBlock 實作您自己的非同步功能的詳細資訊,請參閱非同步程式設計模型。 XAsyncBlock 必須在非同步呼叫的整個存留期內保留在記憶體中。不過,如果 XAsyncBlock 是動態配置的,則可以在非同步呼叫的完成回呼中安全地將其刪除。

需求

標頭: XAsync.h 支援的平台: Windows、XBOX One 系列主機和 XBOX Series 主機

概念文件

另請參閱

XAsync 成員
XAsyncProvider 成員
非同步程式設計模型
Last modified on October 6, 2026