IAsyncAction 介面

定義

表示非同步動作。 這是許多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 BasicC++JavaScript) 中呼叫非同步 API。

IAsyncAction 也是某些進階案例公用程式 API 的輸入類型,例如 CoreDispatcher.RunAsyncThreadPool.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::IAsyncActionIAsyncAction的 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()

傳回動作的結果。

適用於

另請參閱