Udostępnij za pośrednictwem


task_completion_event — Klasa

Klasa task_completion_event umożliwia opóźnienie wykonywania zadania do momentu spełnienia warunku lub uruchomienia zadania w odpowiedzi na zdarzenie zewnętrzne.

Składnia

template<typename _ResultType>
class task_completion_event;

template<>
class task_completion_event<void>;

Parametry

_ResultType
Typ wyniku tej task_completion_event klasy.

Elementy członkowskie

Konstruktory publiczne

Nazwa/nazwisko opis
task_completion_event task_completion_event Tworzy obiekt.

Metody publiczne

Nazwa/nazwisko opis
set Przeciążone. Ustawia zdarzenie ukończenia zadania.
set_exception Przeciążone. Propaguje wyjątek do wszystkich zadań skojarzonych z tym zdarzeniem.

Uwagi

Użyj zadania utworzonego na podstawie zdarzenia ukończenia zadania, gdy scenariusz wymaga utworzenia zadania, które zostanie ukończone, a tym samym jego kontynuacji zaplanowanych do wykonania w pewnym momencie w przyszłości. Element task_completion_event musi mieć ten sam typ, co utworzone zadanie, i wywołanie metody set w zdarzeniu ukończenia zadania z wartością tego typu spowoduje ukończenie skojarzonego zadania i zapewni tę wartość w wyniku jego kontynuacji.

Jeśli zdarzenie ukończenia zadania nigdy nie zostanie zasygnalizowane, wszystkie utworzone z niego zadania zostaną anulowane po jego zdestrukcji.

task_completion_event zachowuje się jak inteligentny wskaźnik i powinien być przekazywany przez wartość.

Hierarchia dziedziczenia

task_completion_event

Wymagania

Nagłówek: ppltasks.h

Przestrzeń nazw: współbieżność

set

Ustawia zdarzenie ukończenia zadania.

bool set(_ResultType _Result) const ;

bool set() const ;

Parametry

_Wynik
Wynik ustawiania tego zdarzenia za pomocą polecenia .

Wartość zwracana

Metoda zwraca true wartość , jeśli zdarzenie zakończyło się pomyślnie. Zwraca wartość false , jeśli zdarzenie jest już ustawione.

Uwagi

W obecności wielu lub współbieżnych wywołań do setprogramu tylko pierwsze wywołanie powiedzie się, a jego wynik (jeśli istnieje) będzie przechowywany w zdarzeniu ukończenia zadania. Pozostałe zestawy są ignorowane, a metoda zwróci wartość false. Po ustawieniu zdarzenia ukończenia zadania wszystkie zadania utworzone na podstawie tego zdarzenia zostaną natychmiast ukończone, a jego kontynuacje, jeśli istnieją, zostaną zaplanowane. Obiekty ukończenia zadania, które mają wartość inną _ResultType niż void , zostaną przekazane do ich kontynuacji.

set_exception

Propaguje wyjątek do wszystkich zadań skojarzonych z tym zdarzeniem.

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

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

Parametry

_E
Typ wyjątku.

_Oprócz
Wyjątek do ustawienia.

_ExceptionPtr
Wskaźnik wyjątku do ustawienia.

Wartość zwracana

task_completion_event

task_completion_event Tworzy obiekt.

task_completion_event();

Zobacz też

Przestrzeń nazw współbieżności