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