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
Timer 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à

ISource

source_block

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.

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();

start

Avvia il timer blocco di messaggistica. Numero specificato di millisecondi dopo la chiamata, il valore specificato verrà propagato a valle come .message

void start();

arresta

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

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

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

~Timer

Elimina un timer blocco di messaggistica.

~timer();

Vedi anche

Spazio dei nomi concurrency