次の方法で共有


task_completion_event クラス

task_completion_event クラスを使用すると、条件が満たされるまで、または外部イベントに応答してタスクを開始するまで、タスクの実行を遅延できます。

構文

template<typename _ResultType>
class task_completion_event;

template<>
class task_completion_event<void>;

パラメーター

_ResultType
この task_completion_event クラスの結果の型。

メンバー

パブリック コンストラクター

名前 説明
task_completion_event task_completion_event オブジェクトを構築します。

パブリック メソッド

名前 説明
set 過負荷です。 タスクの完了イベントを設定します。
set_exception 過負荷です。 このイベントに関連付けられているすべてのタスクに例外を反映します。

解説

タスクを作成するシナリオで、将来のいずれかの時点でタスクが終了し、そのタスクの継続が実行されるようにスケジュールする必要がある場合、タスクの完了イベントから作成されるタスクを使用します。 task_completion_event には、作成するタスクと同じ型を含める必要があります。また、その型の値を使用し、タスクの完了イベントで set メソッドを呼び出すと、関連するタスクが完了し、その値が結果としてタスクの継続に渡されます。

タスクの完了イベントがシグナルを受け取らない場合、そのイベントから作成されたタスクは、イベントが破棄されるときに取り消されます。

task_completion_event は、スマート ポインターのように動作し、値渡しされる必要があります。

継承階層

task_completion_event

要件

ヘッダー: ppltasks.h

名前空間: concurrency

set

タスクの完了イベントを設定します。

bool set(_ResultType _Result) const ;

bool set() const ;

パラメーター

_Result
このイベントを設定する結果。

戻り値

イベントの設定が成功した場合、メソッドは true を返します。 イベントが既に設定されている場合は、false を返します。

解説

set の複数呼び出しまたは同時呼び出しがある場合、最初の呼び出しだけが成功し、その結果 (結果が返される場合) はタスクの完了イベントに格納されます。 その他の set は無視され、メソッドは false を返します。 タスクの完了イベントを設定すると、そのイベントから作成されたすべてのタスクは直ちに完了します。また継続が存在する場合は、その継続がスケジュールされます。 void 以外の _ResultType を持つタスクの完了オブジェクトは、その値を継続に渡します。

set_exception

このイベントに関連付けられているすべてのタスクに例外を反映します。

template<typename _E>
__declspec(noinline) bool set_exception(_E _Except) const;

__declspec(noinline) bool set_exception(std::exception_ptr _ExceptionPtr) const ;

パラメーター

_E
例外の種類。

_Except
設定する例外。

_ExceptionPtr
設定する例外ポインター。

戻り値

task_completion_event

task_completion_event オブジェクトを構築します。

task_completion_event();

関連項目

コンカレンシー名前空間