create_async 函式
以使用者提供的 Lambda 或函式物件為基礎,建立 Windows 執行階段非同步建構。 根據傳遞至方法的 Lambda 簽章,create_async 的傳回類型是下列其中一個:IAsyncAction^、IAsyncActionWithProgress<TProgress>^、IAsyncOperation<TResult>^ 或 IAsyncOperationWithProgress<TResult, TProgress>^。
template<
typename _Function
>
__declspec(
noinline
) auto create_async(const _Function& _Func) -> decltype(ref new details::_AsyncTaskGeneratorThunk<_Function>(_Func));
參數
_Function
_Func
從中建立 Windows 執行階段非同步建構的 Lambda 或函式物件。
傳回值
由 IAsyncAction^、IAsyncActionWithProgress<TProgress>^、IAsyncOperation<TResult>^ 或 IAsyncOperationWithProgress<TResult, TProgress>^ 表示的非同步建構。 傳回的介面依賴傳遞至函式的 Lambda 簽章。
備註
Lambda 的傳回類型決定建構是動作或作業。
傳回 void 的 Lambda 造成動作的建立。 傳回屬於類型 TResult 之結果的 Lambda 會造成 TResult 作業的建立。
Lambda 可能也會傳回 task<TResult>,將非同步工作封裝在本身內或是表示非同步工作的工作鏈結的接續。 在這種情況下, Lambda 本身是執行的內嵌,因為工作是非同步執行的工作,而且 Lambda 的傳回類型會解除包裝以產生 create_async所傳回的非同步建構。 這表示傳回 task<void> 的 Lambda 會導致動作的建立,而傳回 task<TResult> 的 Lambda 會造成 TResult 作業的建立。
Lambda 可以接受零個、一個或兩個引數。 有效的引數為 progress_reporter<TProgress> 和 cancellation_token,使用兩者時依此順序。 沒有引數的 Lambda 會導致建立沒有進度報告功能的非同步建構。 接受 progress_reporter<TProgress> 的 Lambda 會使 create_async 傳回非同步建構,這個建構會在每次呼叫 progress_reporter 物件的 report 方法時,報告屬於類型 TProgress 的進度。 接受 cancellation_token 的 Lambda 可能使用該語彙基元來檢查取消的狀態,或是將語彙基元傳遞給所建立的工作,讓非同步建構的取消導致這些工作的取消。
如果 Lambda 或函式物件的主體傳回結果 (而非 task<TResult>),則會在執行階段隱含為其建立之工作的內容的處理序 MTA 中非同步執行 Lambda。 IAsyncInfo::Cancel 方法會導致隱含工作的取消。
如果 Lambda 的主體傳回工作,則 Lambda 會執行內嵌,而且藉由宣告 Lambda 接受屬於類型 cancellation_token 的引數,您可以觸發任何工作的取消,這些工作是您建立工作時,透過傳入該語彙基元,在 Lambda 建立的。 您可以在語彙基元使用 IAsyncInfo::Cancel 方法使執行階段在您在非同步作業或產生的動作呼叫 register_callback 時叫用回呼。
這個函式只供 Windows 市集應用程式使用。
需求
**標頭:**ppltasks.h
**命名空間:**concurrency
請參閱
參考
其他資源
cancelation_token Class