task_completion_event (clase)
La clase task_completion_event
permite retrasar la ejecución de una tarea hasta que se satisfaga una condición, o iniciar una tarea en respuesta a un evento externo.
Sintaxis
template<typename _ResultType>
class task_completion_event;
template<>
class task_completion_event<void>;
Parámetros
_ResultType
El tipo de resultado de esta clase task_completion_event
.
Miembros
Constructores públicos
Nombre | Descripción |
---|---|
task_completion_event | Construye un objeto task_completion_event . |
Métodos públicos
Nombre | Descripción |
---|---|
set | Con sobrecarga. Establece el evento de finalización de la tarea. |
set_exception | Con sobrecarga. Propaga una excepción a todas las tareas asociadas con este evento. |
Comentarios
Use una tarea creada a partir de un evento de finalización de la tarea cuando su escenario requiere la creación de una tarea que completar, y así tendrá las continuaciones programadas para su ejecución en el futuro. task_completion_event
debe tener el mismo tipo que la tarea que se crea, así como poder llamar al método set en el evento de finalización de la tarea con un valor de ese tipo, lo que provocará que se complete la tarea asociada y proporcionará ese valor como resultado de sus continuaciones.
Si el evento de finalización de la tarea nunca se señala, cualquier tarea creada a partir de ese evento se cancelará cuando se destruye.
El objeto task_completion_event
se comporta como un puntero inteligente y debe pasar por valor.
Jerarquía de herencia
task_completion_event
Requisitos
Encabezado: ppltasks.h
Espacio de nombres: simultaneidad
set
Establece el evento de finalización de la tarea.
bool set(_ResultType _Result) const ;
bool set() const ;
Parámetros
_Result
Resultado con el que se va a establecer este evento.
Valor devuelto
El método devuelve true
si se realizó correctamente al establecer el evento. Devuelve false
si el evento ya está establecido.
Comentarios
En presencia de varias llamadas simultáneas o múltiples a set
, solo la primera llamada se realizará correctamente y su resultado (si existe) se almacenará en el evento de finalización de la tarea. Los conjuntos restantes se omiten y el método devolverá false. Al establecer un evento de finalización de tareas, todas las tareas creadas a partir de ese evento se completarán inmediatamente y se programarán sus continuaciones, si las hay. Objetos de finalización de tareas que tienen un _ResultType
valor distinto void
de pasará el valor a sus continuaciones.
set_exception
Propaga una excepción a todas las tareas asociadas con este evento.
template<typename _E>
__declspec(noinline) bool set_exception(_E _Except) const;
__declspec(noinline) bool set_exception(std::exception_ptr _ExceptionPtr) const ;
Parámetros
_E
Tipo de la excepción.
_Except
Excepción que se va a establecer.
_ExceptionPtr
Puntero de excepción que se va a establecer.
Valor devuelto
task_completion_event
Construye un objeto task_completion_event
.
task_completion_event();