IAsyncAction 介面
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
表示非同步動作。 這是許多Windows 執行階段非同步方法的傳回類型,這些方法沒有結果物件,也不會報告進行中的進度。
public interface class IAsyncAction : IAsyncInfo
/// [Windows.Foundation.Metadata.ContractVersion(Windows.Foundation.FoundationContract, 65536)]
/// [Windows.Foundation.Metadata.Guid(1516535814, 33850, 19881, 134, 91, 157, 38, 229, 223, 173, 123)]
struct IAsyncAction : IAsyncInfo
[Windows.Foundation.Metadata.ContractVersion(typeof(Windows.Foundation.FoundationContract), 65536)]
[Windows.Foundation.Metadata.Guid(1516535814, 33850, 19881, 134, 91, 157, 38, 229, 223, 173, 123)]
public interface IAsyncAction : IAsyncInfo
Public Interface IAsyncAction
Implements IAsyncInfo
- 衍生
- 屬性
- 實作
Windows 需求
裝置系列 |
Windows 10 (已於 10.0.10240.0 引進)
|
API contract |
Windows.Foundation.FoundationContract (已於 v1.0 引進)
|
備註
IAsyncAction 是未通訊結果物件或進行中進度之所有Windows 執行階段非同步方法的傳回類型。 這構成超過 300 個不同的Windows 執行階段 API。 執行報告進度 (但沒有結果的 API) 使用另一個介面IAsyncActionWithProgress TProgress <> 。
當您在應用程式程式碼中使用傳回 IAsyncAction 的方法時,通常不會直接存取 IAsyncAction 傳回值。 這是因為您幾乎一律使用特定語言的可等候語法。 在此情況下,方法的明顯傳回值為 void。 如需詳細資訊,請參閱非同步程式設計或其中一個語言特定指南,以Windows 執行階段非同步程式設計 (在 C# 或 Visual Basic、C++、JavaScript) 中呼叫非同步 API。
IAsyncAction 也是某些進階案例公用程式 API 的輸入類型,例如 CoreDispatcher.RunAsync 和 ThreadPool.RunAsync。
即使您未使用特定語言的可等候語法,也不會直接使用 IAsyncAction。 每個語言都有擴充點,通常比Windows 執行階段介面更容易使用。 JavaScript 具有 WinJS.Promise,以及 then/done 語法。 .NET 具有 AsTask 擴充方法,一旦 IAsyncAction 轉換成 Task,就更容易取消、完成時收到通知等等。 針對 C++/CX,您可以使用 並行運行 時間 (包裝呼叫,並使用 create_task) 。 換句話說,IAsyncAction 可視為執行時間層級基礎結構,每個語言都會使用這些基礎結構作為架構,以自己的方式支援可等候的語法或非同步程式設計模型。
有些Windows 執行階段非同步方法會使用自訂動作類型,而不是使用 IAsyncAction, (名稱中可能有 「Operation」 而非 「Action」) 。 例如,SignOutUserOperation是實作 IAsyncAction 的Windows 執行階段類型。 然後 ,SignOutUserOperation 類型會當做 SignOutUserAsync 方法的自訂動作傳回類型使用。
C++/WinRT 延伸模組函式
注意
擴充功能函式存在於特定Windows 執行階段 API 的 C++/WinRT 投影類型上。 例如, winrt::Windows::Foundation::IAsyncAction 是 IAsyncAction的 C++/WinRT 投影類型。 擴充函式不是應用程式二進位介面的一部分, (實際Windows 執行階段類型的 ABI) 介面,因此它們不會列為Windows 執行階段 API 的成員。 但您可以從任何 C++/WinRT 專案內呼叫它們。 請參閱擴充 Windows 執行階段 API 的 C++/WinRT 函式。
void get() const;
以同步方式等候動作完成。 如果動作已取消,或進入錯誤狀態,則會擲回對應的例外狀況。 您不得從單一執行緒 Apartment 呼叫它。 如需詳細資訊,以及示範如何呼叫 get的程式碼範例,請參閱 撰寫協同程式。
AsyncStatus wait_for(TimeSpan const& timeout) const;
以同步方式等候動作完成,或等候指定的逾時。 傳回 IAsyncAction的狀態,如果逾時已耗用,則傳回 AsyncStatus::Started 。 如果動作沒有逾時,請呼叫 GetResults 以取得動作的結果。 如需詳細資訊,以及顯示如何呼叫 wait_for的程式代碼範例,請參閱 讓非同步逾時變得容易。
介面繼承
IAsyncAction 繼承 IAsyncInfo。 實作 IAsyncAction 的類型也會實作 IAsyncInfo的介面成員:
實作者的注意事項
如同呼叫現有的方法,有一些特定語言的方式來定義不會直接使用 IAsyncInfo 的非同步方法。 如果使用 .NET 撰寫程式碼,您的方法可以傳回 Task。 針對 C++/CX,您可以使用 並行執行時間。 不過,如果您要定義元件,可以在內部使用Task 工作/ ,但您必須傳回公用方法的其中一個Windows 執行階段介面。 語言特定的非同步支援類型 (,以及您可能在程式碼中使用的許多其他語言特定類型,) 無法用於Windows 執行階段元件的公用介面區。
屬性
Completed |
取得或設定處理動作已完成通知的方法。 |
ErrorCode |
取得字串,描述非同步作業的錯誤狀況。 (繼承來源 IAsyncInfo) |
Id |
取得非同步作業的控制碼。 (繼承來源 IAsyncInfo) |
Status |
取得值,這個值表示非同步作業的狀態。 (繼承來源 IAsyncInfo) |
方法
Cancel() |
取消非同步作業。 (繼承來源 IAsyncInfo) |
Close() |
關閉非同步作業。 (繼承來源 IAsyncInfo) |
GetResults() |
傳回動作的結果。 |
適用於
另請參閱
意見反應
提交並檢視相關的意見反應