Condividi tramite


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 Sovraccarico. Costruisce un timer blocco di messaggistica che genererà un determinato messaggio dopo un intervallo specificato.
~timer Distruttore Elimina un timer blocco di messaggistica.

Metodi pubblici

Nome Descrizione
pause Arresta il blocco di messaggistica timer. 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
ferma Ferma il timer blocco dei messaggi.

Metodi protetti

Nome Descrizione
accetta_messaggio 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à a chi esegue la chiamata.
link_target_notification Callback che notifica che un nuovo target è stato collegato a questo blocco di messaggistica timer.
propaga_a_qualsiasi_destinazione Tenta di inviare il messaggio prodotto dal blocco timer a tutti i target collegati.
release_message Rilascia una precedente prenotazione di messaggi. (Sovrascrive source_block::release_message.)
messaggio_di_riserva Riserva un messaggio offerto in precedenza da questo timer blocco di messaggistica. Esegue l'operazione di override di source_block::reserve_message.
resume_propagation Riprende la propagazione dopo il rilascio di una prenotazione. (Oltrepassa source_block::resume_propagation.)

Osservazioni:

Per altre informazioni, vedere Blocchi di messaggi asincroni.

Gerarchia di ereditarietà

ISource

source_block

timer

Requisiti

Intestazione: agents.h

Spazio dei nomi: Concurrency

accetta_messaggio

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
L'oggetto runtime_object_identity dell'offerta 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à a chi esegue la chiamata.

virtual message<T>* consume_message(runtime_object_identity _MsgId);

Parametri

_MsgId
Il runtime_object_identity dell'oggetto message che viene consumato.

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.

Callback che notifica che un nuovo target è stato collegato a questo blocco di messaggistica timer.

virtual void link_target_notification(_Inout_ ITarget<T>* _PTarget);

Parametri

_PTarget
Puntatore alla destinazione appena collegata.

pausa

Ferma il timer blocco dei messaggi. 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 inviare il messaggio prodotto dal blocco timer a tutti i target collegati.

virtual void propagate_to_any_targets(_Inout_opt_ message<T> *);

messaggio_di_rilascio

Rilascia una precedente prenotazione di messaggi.

virtual void release_message(runtime_object_identity _MsgId);

Parametri

_MsgId
runtime_object_identity dell'oggetto message che viene rilasciato.

messaggio_di_riserva

Riserva un messaggio offerto in precedenza da questo timer blocco di messaggistica.

virtual bool reserve_message(runtime_object_identity _MsgId);

Parametri

_MsgId
Elemento runtime_object_identity dell'oggetto message riservato.

Valore restituito

true se il messaggio è stato riservato correttamente, false in caso contrario.

Osservazioni:

Dopo che reserve è stato chiamato, se restituisce true, devono essere chiamati consume o release per prendere 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();

fermare

Ferma il timer blocco dei messaggi.

void stop();

temporizzatore

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.

_Ripetizione
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.

_GruppoDiProgrammazione
Oggetto ScheduleGroup all'interno del quale è pianificata l'attività di propagazione per il blocco della messaggistica timer . L'oggetto Scheduler utilizzato è implicito nel gruppo di pianificazione.

Osservazioni:

Se non si specificano i parametri _Scheduler o _ScheduleGroup , il runtime usa l'utilità di pianificazione predefinita.

~timer

Elimina un timer blocco di messaggistica.

~timer();

Vedi anche

Spazio dei nomi concorrenza