Compartir a través de


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
evento_de_finalización_de_tarea Construye un objeto task_completion_event.

Métodos públicos

Nombre Descripción
set Sobrecargado Establece el evento de finalización de la tarea.
set_exception Sobrecargado Propaga una excepción a todas las tareas asociadas con este evento.

Comentarios

Utilice una tarea que se crea a partir de un evento de finalización de tarea cuando su escenario requiera crear una tarea que se completará y, por lo tanto, tendrá sus continuaciones programadas para la ejecución en el futuro. task_completion_event debe tener el mismo tipo que la tarea que se crea, y llamar al método set en la finalización de la tarea con un valor de ese tipo hará que la tarea asociada se complete y proporcione ese valor como resultado a sus continuaciones.

Si el evento de finalización de la tarea nunca se señaliza, cualquier tarea creada a partir de ese evento puede cancelarse cuando se destruya.

El objeto task_completion_event se comporta como un puntero inteligente y debe pasarse 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 establece el evento correctamente. 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 completación de tareas que tienen un _ResultType diferente a void pasarán 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

evento_de_finalización_de_tarea

Construye un objeto task_completion_event.

task_completion_event();

Consulte también

espacio de nombres de concurrencia