次の方法で共有


create_async 関数

ユーザー指定のラムダ関数またはオブジェクトに基づいてウィンドウのランタイムの非同期構造を作成します。create_async の戻り値の型は、メソッドに渡されるラムダの定義に基づいて IAsyncAction^IAsyncActionWithProgress<TProgress>^IAsyncOperation<TResult>^、または IAsyncOperationWithProgress<TResult, TProgress>^ の 1 つです。

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

パラメーター

  • _Function

  • _Func
    ウィンドウのランタイムの非同期構造を作成するか、ラムダ関数オブジェクト。

戻り値

IAsyncAction^、 IAsyncActionWithProgress<TProgress>の ^、 IAsyncOperation<TResult>の ^、または IAsyncOperationWithProgress<TResult、 TProgress>の ^ によって表される非同期構造体。返されるインターフェイスは、関数に渡されるラムダの定義によって異なります。

解説

ラムダの戻り値の型は、構造体を操作または操作であるかどうかを判定します。

無効な原因を返すラムダ操作の作成。結果の型の TResult の原因を TResult 操作の作成を返すラムダ。

そのオブジェクト内の aysnchronous 作業をカプセル化するか、非同期タスクの作業を表すチェーンの継続であるラムダは、 task<TResult> を返すことがあります。タスクを非同期的に実行できる、ラムダの戻り値の型は create_asyncによって返される非同期構造を作成する場合に開けられますこのようなものにするため、ラムダ自体はインラインで実行されるようになります。これは、タスク<void> を返すラムダにより、操作が作成される、タスク<TResult> を返すラムダにより TResult 操作の作成が発生することはありません。

ラムダは、ゼロの一つまたは二つの引数を受け取ることがあります。有効な引数は両方とも使用されている順序で progress_reporter<TProgress>cancellation_tokenです。引数のないラムダにより進行状況レポートの機能がないと非同期構造が作成されます。progress_reporter<TProgress> を受け取るラムダにより create_async は、レポートの進行状況の型 TProgress は常 progress_reporter のオブジェクトの report のメソッドを呼び出す非同期構造体を返します。cancellation_token を受け取るラムダは、非同期構造のキャンセルしても、それらのタスクのキャンセルが発生するようなキャンセルを確認するためにそのトークンを使用することですが、または作成するタスクに渡します。

ラムダまたは関数オブジェクトの本体が結果 (および持たないタスク<TResult>)を返す場合、 lamdba は、ランタイムがそのパラメーターに暗黙に作成するタスクのコンテキストでプロセス MTA 内で非同期的に実行されます。IAsyncInfo::Cancel のメソッドにより暗黙的なタスクのキャンセルが発生します。

ラムダの本体がタスクを返す場合、 lamba はインラインで実行し、引数の型 cancellation_token に実行するにラムダの宣言によってそれらを作成する場合にラムダ内でそのトークンを渡すことによって作成するすべてのタスクのキャンセルをトリガーできます。生成される非同期操作または操作の IAsyncInfo::Cancel をダイヤルすると、もランタイムは、コールバックを呼び出してトークンの register_callback のメソッドを使用できます。

この関数は、地下鉄のフォーム アプリケーションにのみ使用できます。

必要条件

ヘッダー: ppltasks.h

名前空間: の同時実行

参照

関連項目

concurrency 名前空間

Task クラス

progress_reporter クラス

その他の技術情報

cancelation_token Class