timer (clase)
Un bloque de mensajería timer
es un bloque source_block
con destino único, capaz de enviar un mensaje a su destino cuando un período de tiempo especificado ha transcurrido o en intervalos concretos.
Sintaxis
template<class T>
class timer : public Concurrency::details::_Timer, public source_block<single_link_registry<ITarget<T>>>;
Parámetros
T
El tipo de carga de los mensajes de salida de este bloque.
Miembros
Constructores públicos
Nombre | Descripción |
---|---|
timer | Con sobrecarga. Construye un bloque de mensajería timer que activará un mensaje determinado después de un intervalo especificado. |
~timer Destructor | Destruye un bloque de mensajería timer . |
Métodos públicos
Nombre | Descripción |
---|---|
pause | Detiene el bloque de mensajería timer . Si se trata de un bloque de mensajería repetido timer , se puede reiniciar con una llamada posterior a start() . En el caso de los temporizadores no repetidos, esto tiene el mismo efecto que una llamada a stop . |
start | Inicia el bloque de mensajería timer . Tras el número especificado de milisegundos luego de llamar a esto, el valor especificado se propagará de bajada como message . |
stop | Detiene el bloque de mensajería timer . |
Métodos protegidos
Nombre | Descripción |
---|---|
accept_message | Acepta un mensaje ofrecido por este bloque de mensajería timer y transfiere la propiedad al autor de la llamada. |
consume_message | Consume un mensaje ofrecido previamente por el bloque de mensajería timer y reservado por el destino, y transfiere la propiedad al autor de la llamada. |
link_target_notification | Devolución de llamada que notifica que se ha vinculado un nuevo destino a este bloque de mensajería timer . |
propagate_to_any_targets | Intenta ofrecer el mensaje generado por el bloque timer a todos los destinos vinculados. |
release_message | Libera una reserva de mensajes anterior. (Invalida source_block::release_message). |
reserve_message | Reserva un mensaje ofrecido anteriormente por este bloque de mensajería timer . (Invalida source_block::reserve_message). |
resume_propagation | Reanuda la propagación después de que se haya liberado una reserva. (Invalida source_block::resume_propagation). |
Comentarios
Para obtener más información, consulte Bloques de mensajes asincrónicos.
Jerarquía de herencia
timer
Requisitos
Encabezado: agents.h
Espacio de nombres: simultaneidad
accept_message
Acepta un mensaje ofrecido por este bloque de mensajería timer
y transfiere la propiedad al autor de la llamada.
virtual message<T>* accept_message(runtime_object_identity _MsgId);
Parámetros
_MsgId
El valor runtime_object_identity
del objeto message
ofrecido.
Valor devuelto
Puntero al objeto message
del que el autor de la llamada tiene ahora la propiedad.
consume_message
Consume un mensaje ofrecido previamente por el bloque de mensajería timer
y reservado por el destino, y transfiere la propiedad al autor de la llamada.
virtual message<T>* consume_message(runtime_object_identity _MsgId);
Parámetros
_MsgId
Valor runtime_object_identity
del objeto message
que se consumirá.
Valor devuelto
Puntero al objeto message
del que el autor de la llamada tiene ahora la propiedad.
Comentarios
Es similar a accept
, pero siempre va precedido de una llamada a reserve
.
link_target_notification
Devolución de llamada que notifica que se ha vinculado un nuevo destino a este bloque de mensajería timer
.
virtual void link_target_notification(_Inout_ ITarget<T>* _PTarget);
Parámetros
_PTarget
Puntero al destino recién vinculado.
pause
Detiene el bloque de mensajería timer
. Si se trata de un bloque de mensajería repetido timer
, se puede reiniciar con una llamada posterior a start()
. En el caso de los temporizadores no repetidos, esto tiene el mismo efecto que una llamada a stop
.
void pause();
propagate_to_any_targets
Intenta ofrecer el mensaje generado por el bloque timer
a todos los destinos vinculados.
virtual void propagate_to_any_targets(_Inout_opt_ message<T> *);
release_message
Libera una reserva de mensajes anterior.
virtual void release_message(runtime_object_identity _MsgId);
Parámetros
_MsgId
El valor runtime_object_identity
del objeto message
que se libera.
reserve_message
Reserva un mensaje ofrecido anteriormente por este bloque de mensajería timer
.
virtual bool reserve_message(runtime_object_identity _MsgId);
Parámetros
_MsgId
El runtime_object_identity
del objeto message
que se está reservando.
Valor devuelto
true
si se ha reservado correctamente el mensaje; de lo contrario, false
.
Comentarios
Después de llamar a reserve
, si devuelve true
, se debe llamar a consume
o release
para aceptar o liberar la propiedad del mensaje.
resume_propagation
Reanuda la propagación después de que se haya liberado una reserva.
virtual void resume_propagation();
start
Inicia el bloque de mensajería timer
. Tras el número especificado de milisegundos luego de llamar a esto, el valor especificado se propagará de bajada como message
.
void start();
stop
Detiene el bloque de mensajería timer
.
void stop();
timer
Construye un bloque de mensajería timer
que activará un mensaje determinado después de un 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
El número de milisegundos que deben transcurrir después de que se inicie la llamada para que el mensaje especificado se propague de bajada.
value
El valor que se propagará de bajada cuando se agote el temporizador.
_PTarget
El destino al que el temporizador propagará su mensaje.
_Repeating
Si es true, indica que el temporizador se activará periódicamente cada _Ms
milisegundos.
_Scheduler
El objeto Scheduler
en el que se programa la tarea de propagación para el bloque de mensajería timer
.
_ScheduleGroup
El objeto ScheduleGroup
dentro del que se programa la tarea de propagación para el bloque de mensajería timer
. El objeto Scheduler
utilizado está implícito en el grupo de programación.
Comentarios
El runtime usa el programador predeterminado si no se especifican los parámetros _Scheduler
o _ScheduleGroup
.
~temporizador
Destruye un bloque de mensajería timer
.
~timer();