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();