共用方式為


create_async 函式

建立 Windows 執行階段的非同步建構,根據使用者提供 lambda 或函式物件。 傳回型別create_async是其中任何一個IAsyncAction^IAsyncActionWithProgress<TProgress>^IAsyncOperation<TResult>^,或IAsyncOperationWithProgress<TResult, TProgress>^ lambda 傳遞給方法的簽名碼為基礎。

template<
   typename _Function
>
auto create_async(
   const _Function& _Func
) -> decltype(ref new details::_AsyncTaskGeneratorThunk<_Function>(_Func));

參數

  • _Function

  • _Func
    用來建立 Windows 執行階段的非同步建構 lambda 或函式物件。

傳回值

IAsyncAction 所代表的非同步建構 ^,IAsyncActionWithProgress <TProgress> ^,IAsyncOperation <TResult> ^,或 < TResult、 TProgress > IAsyncOperationWithProgress ^。 傳回的介面,取決於 lambda 傳遞至函式的簽章。

備註

Lambda 的傳回型別會決定此建構為一個動作或作業。

Lambda 會傳回虛值會導致動作建立。 Lambda 的傳回型別的結果TResult會導致建立 TResult 的作業。

也可能會傳回 lambda task<TResult> aysnchronous 內的工作本身會封裝或一連串的工作,表示非同步工作的其中之一。 在此情況下,lambda 本身是以執行的內嵌的因為任務是以非同步方式執行,而且 lambda 的傳回型別會解除包裝以產生所傳回的非同步建構create_async。 這意味著 lambda 的傳回一項工作 <void> 會使用新建立的動作,以及將 lambda 會傳回一項工作 <TResult> 將會造成作業的 TResult 的建立。

Lambda 可能要花任一個零,一或兩個引數。 有效的引數是progress_reporter<TProgress>cancellation_token、 順序若兩個都使用。 不需引數將 lambda 會非同步的建構不提供進度報告功能的情況下建立。 Lambda 採用 progress_reporter <TProgress> 將會造成create_async傳回就會報告進度的型別 TProgress 每次非同步建構report progress_reporter 物件的方法呼叫。 會使用 cancellation_token lambda 可能使用該語彙基元來檢查取消,或將它傳遞給它會建立使取消非同步建構會造成取消的那些任務的任務。

如果主體的 lambda 或函式物件傳回一個結果 (和不工作 <TResult>),lamdba 將非同步執行工作的執行階段的內容中的 MTA 以隱含方式建立它的處理序中。 IAsyncInfo::Cancel方法將導致取消隱含的工作。

如果工作中,lamba 傳回 lambda 的主體執行,並藉由宣告 lambda 的型別引數,才能cancellation_token取消藉由傳遞該語彙基元中建立這些 lambda 中所建立的任何工作的觸發程序。 您也可以使用register_callback上要使執行階段呼叫時叫用回呼的語彙基元的方法IAsyncInfo::Cancel上的非同步作業或動作所產生。.

這個函式只適地鐵樣式應用程式。

需求

標頭: ppltasks.h

Namespace: 並行存取

請參閱

參考

concurrency 命名空間

工作類別

progress_reporter 類別

其他資源

cancelation_token Class