Compartilhar via


Classe TaskCompletionEvent

A classe task_completion_event permite atrasar a execução de uma tarefa até que uma condição seja atendida, ou iniciar uma tarefa em resposta a um evento externo.

Sintaxe

template<typename _ResultType>
class task_completion_event;

template<>
class task_completion_event<void>;

Parâmetros

_ResultType
O tipo de resultado desta classe task_completion_event.

Membros

Construtores públicos

Nome Descrição
evento_de_conclusão_de_tarefa Constrói um objeto task_completion_event.

Métodos públicos

Nome Descrição
set Sobrecarregado. Define o evento de conclusão de tarefas.
set_exception Sobrecarregado. Propaga uma exceção para todas as tarefas associadas a esse evento.

Comentários

Use uma tarefa criada a partir de um evento de conclusão de tarefa quando seu cenário exigir a criação de uma tarefa que será concluída e, portanto, terá as suas continuações agendadas para execução em algum momento futuro. O task_completion_event deve ter o mesmo tipo da tarefa que você cria e a chamada do método de definição no evento de conclusão de tarefas com um valor desse tipo fará com que a tarefa associada seja concluída e fornecerá esse valor como resultado das continuações.

Se o evento de conclusão de tarefas nunca foi sinalizado, todas as tarefas criadas por meio dele serão canceladas quando ele for destruído.

task_completion_event comporta-se como um ponteiro inteligente e deve ser passado por valor.

Hierarquia de herança

task_completion_event

Requisitos

Cabeçalho: ppltasks.h

Namespace: simultaneidade

set

Define o evento de conclusão de tarefas.

bool set(_ResultType _Result) const ;

bool set() const ;

Parâmetros

_Result
O resultado com o qual definir esse evento.

Valor de retorno

O método retornará true se tiver sido bem-sucedido na configuração do evento. Ele retornará false se o evento já estiver definido.

Comentários

Na presença de várias chamadas ou chamadas simultâneas a set, somente a primeira chamada será bem-sucedida e seu resultado (se houver) será armazenado no evento de conclusão da tarefa. Os conjuntos restantes são ignorados e o método retornará false. Ao definir um evento de conclusão de tarefa, todas as tarefas criadas a partir desse evento serão concluídas imediatamente e suas continuações, se houver, serão agendadas. Objetos de conclusão de tarefa que têm um _ResultType diferente do void passarão o valor para suas continuações.

definir_exceção

Propaga uma exceção para todas as tarefas associadas a esse 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
O tipo de exceção.

_Except
A exceção a ser configurada.

_ExceptionPtr
O ponteiro de exceção a ser definido.

Valor de retorno

task_completion_event

Constrói um objeto task_completion_event.

task_completion_event();

Confira também

Namespace de concorrência