Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Um bloco de mensagens timer é um source_block de destino único capaz de enviar uma mensagem para seu destino após um período especificado ter se passado ou a intervalos específicos.
Sintaxe
template<class T>
class timer : public Concurrency::details::_Timer, public source_block<single_link_registry<ITarget<T>>>;
Parâmetros
T
O tipo de conteúdo das mensagens de saída desse bloco.
Membros
Construtores públicos
| Nome | Descrição |
|---|---|
| timer | Sobrecarregado. Constrói um bloco de mensagens timer que disparará uma determinada mensagem após um intervalo especificado. |
| Destruidor ~timer | Destrói um bloco de mensagens timer. |
Métodos públicos
| Nome | Descrição |
|---|---|
| pause | Interrompe o bloco de mensagens timer. Se for um bloco de mensagens timer repetido, ele poderá ser reiniciado com uma chamada subsequente a start(). Para temporizadores não repetitivos, isso tem o mesmo efeito que uma chamada a stop. |
| start | Inicia o bloco de mensagens timer. Decorrido o número especificado de milissegundos depois que isso for chamado, o valor especificado será propagado downstream como um message. |
| stop | Interrompe o bloco de mensagens timer. |
Métodos protegidos
| Nome | Descrição |
|---|---|
| accept_message | Aceita uma mensagem que foi oferecida por esse bloco de mensagens timer, transferindo a propriedade para o chamador. |
| consume_message | Consome uma mensagem oferecida anteriormente pelo timer e reservada pelo destino, transferindo a propriedade para o chamador. |
| link_target_notification | Um retorno de chamada que notifica que um novo destino foi vinculado a esse bloco de mensagens timer. |
| propagate_to_any_targets | Tenta oferecer a mensagem produzida pelo bloco timer a todos os destinos vinculados. |
| release_message | Libera uma reserva de mensagem anterior. (Substitui source_block::release_message.) |
| reserve_message | Reserva uma mensagem oferecida anteriormente por este bloco de mensagens timer. (Substitui source_block::reserve_message.) |
| resume_propagation | Retoma a propagação depois que uma reserva é liberada. (Substitui source_block::resume_propagation.) |
Comentários
Para mais informações, confira Blocos de mensagens assíncronas.
Hierarquia de herança
timer
Requisitos
Cabeçalho: agents.h
Namespace: concurrency
accept_message
Aceita uma mensagem que foi oferecida por esse bloco de mensagens timer, transferindo a propriedade para o chamador.
virtual message<T>* accept_message(runtime_object_identity _MsgId);
Parâmetros
_MsgId
O runtime_object_identity do objeto message oferecido.
Valor de retorno
Um ponteiro para o objeto message do qual o chamador agora tem propriedade.
consume_message
Consome uma mensagem oferecida anteriormente pelo timer e reservada pelo destino, transferindo a propriedade para o chamador.
virtual message<T>* consume_message(runtime_object_identity _MsgId);
Parâmetros
_MsgId
O runtime_object_identity do objeto message que está sendo consumido.
Valor de retorno
Um ponteiro para o objeto message do qual o chamador agora tem propriedade.
Comentários
Semelhante a accept, mas é sempre precedido por uma chamada para reserve.
link_target_notification
Um retorno de chamada que notifica que um novo destino foi vinculado a esse bloco de mensagens timer.
virtual void link_target_notification(_Inout_ ITarget<T>* _PTarget);
Parâmetros
_PTarget
Um ponteiro para o destino que acaba de ser vinculado.
pause
Interrompe o bloco de mensagens timer. Se for um bloco de mensagens timer repetido, ele poderá ser reiniciado com uma chamada subsequente a start(). Para temporizadores não repetitivos, isso tem o mesmo efeito que uma chamada a stop.
void pause();
propagate_to_any_targets
Tenta oferecer a mensagem produzida pelo bloco timer a todos os destinos vinculados.
virtual void propagate_to_any_targets(_Inout_opt_ message<T> *);
release_message
Libera uma reserva de mensagem anterior.
virtual void release_message(runtime_object_identity _MsgId);
Parâmetros
_MsgId
O runtime_object_identity do objeto message que está sendo liberado.
reserve_message
Reserva uma mensagem oferecida anteriormente por este bloco de mensagens timer.
virtual bool reserve_message(runtime_object_identity _MsgId);
Parâmetros
_MsgId
O runtime_object_identity do objeto message que está sendo reservado.
Valor de retorno
true se a mensagem foi reservada com êxito; caso contrário, false.
Comentários
Depois de reserve ser chamado, se ele retornar true, consume ou release deverá ser chamado para assumir ou liberar a propriedade da mensagem.
resume_propagation
Retoma a propagação depois que uma reserva é liberada.
virtual void resume_propagation();
iniciar
Inicia o bloco de mensagens timer. Decorrido o número especificado de milissegundos depois que isso for chamado, o valor especificado será propagado downstream como um message.
void start();
stop
Interrompe o bloco de mensagens timer.
void stop();
timer
Constrói um bloco de mensagens timer que disparará uma determinada mensagem após um intervalo especificado.
timer(
unsigned int _Ms,
T const& value,
ITarget<T>* _PTarget = NULL,
bool _Repeating = false);
timer(
Scheduler& _Scheduler,
unsigned int _Ms,
T const& value,
_Inout_opt_ ITarget<T>* _PTarget = NULL,
bool _Repeating = false);
timer(
ScheduleGroup& _ScheduleGroup,
unsigned int _Ms,
T const& value,
_Inout_opt_ ITarget<T>* _PTarget = NULL,
bool _Repeating = false);
Parâmetros
_Ms
O número de milissegundos que devem se passar após o início da chamada para que a mensagem especificada seja propagada downstream.
value
O valor que será propagado downstream quando o temporizador terminar.
_PTarget
O destino para o qual o temporizador propagará sua mensagem.
_Repeating
Se verdadeiro, indica que o temporizador será acionado periodicamente a cada _Ms milissegundos.
_Scheduler
O objeto Scheduler no qual a tarefa de propagação do bloco timer de mensagens está agendada.
_ScheduleGroup
O objeto ScheduleGroup no qual a tarefa de propagação do bloco de mensagens timer está agendada. O objeto Scheduler usado é implícito pelo grupo agendado.
Comentários
O runtime usará o agendador padrão se você não especificar os parâmetros _Scheduler ou _ScheduleGroup.
~temporizador
Destrói um bloco de mensagens timer.
~timer();