Classe timer
Un blocco della messaggistica timer
è un source_block
a destinazione singola in grado di inviare un messaggio alla sua destinazione dopo che è trascorso un determinato periodo di tempo oppure ad intervalli specifici.
Sintassi
template<class T>
class timer : public Concurrency::details::_Timer, public source_block<single_link_registry<ITarget<T>>>;
Parametri
T
Tipo di payload dei messaggi di output di questo blocco.
Membri
Costruttori pubblici
Nome | Descrizione |
---|---|
temporizzatore | Con overload. Costruisce un timer blocco di messaggistica che genererà un determinato messaggio dopo un intervallo specificato. |
Distruttore ~timer | Elimina un timer blocco di messaggistica. |
Metodi pubblici
Nome | Descrizione |
---|---|
pause | Arresta il timer blocco di messaggistica. Se si tratta di un blocco di messaggistica ripetuto timer , può essere riavviato con una chiamata successiva start() . Per i timer non ripetuti, questo ha lo stesso effetto di una stop chiamata. |
start | Avvia il timer blocco di messaggistica. Numero specificato di millisecondi dopo la chiamata, il valore specificato verrà propagato a valle come .message |
stop | Arresta il timer blocco di messaggistica. |
Metodi protetti
Nome | Descrizione |
---|---|
accept_message | Accetta un messaggio offerto da questo timer blocco di messaggistica, trasferendo la proprietà al chiamante. |
consume_message | Utilizza un messaggio offerto in precedenza da timer e riservato dalla destinazione, trasferendo la proprietà al chiamante. |
link_target_notification | Callback che notifica che una nuova destinazione è stata collegata a questo timer blocco di messaggistica. |
propagate_to_any_targets | Tenta di offrire il messaggio generato dal timer blocco a tutte le destinazioni collegate. |
release_message | Rilascia una prenotazione di messaggi precedente. (Esegue l'override di source_block::release_message. |
reserve_message | Riserva un messaggio offerto in precedenza da questo timer blocco di messaggistica. Esegue l'override di source_block::reserve_message. |
resume_propagation | Riprende la propagazione dopo il rilascio di una prenotazione. (Esegue l'override di source_block::resume_propagation. |
Osservazioni:
Per altre informazioni, vedere Blocchi di messaggi asincroni.
Gerarchia di ereditarietà
timer
Requisiti
Intestazione: agents.h
Spazio dei nomi: Concurrency
accept_message
Accetta un messaggio offerto da questo timer
blocco di messaggistica, trasferendo la proprietà al chiamante.
virtual message<T>* accept_message(runtime_object_identity _MsgId);
Parametri
_MsgId
Oggetto runtime_object_identity
dell'oggetto offerto message
.
Valore restituito
Puntatore all'oggetto message
di cui il chiamante ha ora la proprietà.
consume_message
Utilizza un messaggio offerto in precedenza da timer
e riservato dalla destinazione, trasferendo la proprietà al chiamante.
virtual message<T>* consume_message(runtime_object_identity _MsgId);
Parametri
_MsgId
Oggetto runtime_object_identity
dell'oggetto message
utilizzato.
Valore restituito
Puntatore all'oggetto message
di cui il chiamante ha ora la proprietà.
Osservazioni:
Simile a accept
, ma è sempre preceduto da una chiamata a reserve
.
link_target_notification
Callback che notifica che una nuova destinazione è stata collegata a questo timer
blocco di messaggistica.
virtual void link_target_notification(_Inout_ ITarget<T>* _PTarget);
Parametri
_PTarget
Puntatore alla destinazione appena collegata.
pause
Arresta il timer
blocco di messaggistica. Se si tratta di un blocco di messaggistica ripetuto timer
, può essere riavviato con una chiamata successiva start()
. Per i timer non ripetuti, questo ha lo stesso effetto di una stop
chiamata.
void pause();
propagate_to_any_targets
Tenta di offrire il messaggio generato dal timer
blocco a tutte le destinazioni collegate.
virtual void propagate_to_any_targets(_Inout_opt_ message<T> *);
release_message
Rilascia una prenotazione di messaggi precedente.
virtual void release_message(runtime_object_identity _MsgId);
Parametri
_MsgId
Oggetto runtime_object_identity
dell'oggetto message
da rilasciare.
reserve_message
Riserva un messaggio offerto in precedenza da questo timer
blocco di messaggistica.
virtual bool reserve_message(runtime_object_identity _MsgId);
Parametri
_MsgId
Oggetto runtime_object_identity
dell'oggetto message
riservato.
Valore restituito
true
se il messaggio è stato riservato correttamente, false
in caso contrario.
Osservazioni:
Dopo reserve
la chiamata, se restituisce true
, consume
o release
deve essere chiamato per accettare o rilasciare la proprietà del messaggio.
resume_propagation
Riprende la propagazione dopo il rilascio di una prenotazione.
virtual void resume_propagation();
Avvio
Avvia il timer
blocco di messaggistica. Numero specificato di millisecondi dopo la chiamata, il valore specificato verrà propagato a valle come .message
void start();
stop
Arresta il timer
blocco di messaggistica.
void stop();
timer
Costruisce un timer
blocco di messaggistica che genererà un determinato messaggio dopo un intervallo specificato.
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);
Parametri
_Ms
Numero di millisecondi che devono trascorrere dopo l'avvio della chiamata per propagare il messaggio specificato a valle.
value
Valore che verrà propagato a valle al termine del timer.
_PTarget
Destinazione in cui il timer propaga il messaggio.
_Ripetente
Se true, indica che il timer verrà attivato periodicamente ogni _Ms
millisecondo.
_Pianificazione
L'oggetto Scheduler
in cui è pianificata l'attività di propagazione per il timer
blocco di messaggistica.
_ScheduleGroup
Oggetto ScheduleGroup
all'interno del quale è pianificata l'attività di propagazione per il blocco della messaggistica timer
. L'oggetto Scheduler
usato è previsto dal gruppo di pianificazione.
Osservazioni:
Se non si specificano i parametri _Scheduler
o _ScheduleGroup
, il runtime usa l'utilità di pianificazione predefinita.
~temporizzatore
Elimina un timer
blocco di messaggistica.
~timer();