Freigeben über


timer-Klasse

Ein timer-Meldungsblock ist ein source_block mit einem einzelnen Ziel, der nach Ablauf einer bestimmten Zeitspanne oder in bestimmten Intervallen eine Meldung an sein Ziel senden kann.

Syntax

template<class T>
class timer : public Concurrency::details::_Timer, public source_block<single_link_registry<ITarget<T>>>;

Parameter

T
Der Nutzlasttyp der Ausgabemeldungen dieses Blocks.

Mitglieder

Öffentliche Konstruktoren

Name Beschreibung
timer Überladen. Erstellt einen timer Nachrichtenblock, der eine bestimmte Nachricht nach einem angegebenen Intervall auslösen wird.
~timer Destructor Zerstört einen timer Nachrichtenblock.

Öffentliche Methoden

Name Beschreibung
pause Beendet den timer Nachrichtenblock. Wenn es sich um einen wiederholten timer Nachrichtenblock handelt, kann er mit einem nachfolgenden start() Anruf neu gestartet werden. Bei nicht wiederholenden Timern hat dies die gleiche Auswirkung wie ein stop Aufruf.
start Startet den timer Nachrichtenblock. Die angegebene Anzahl von Millisekunden, nachdem diese Methode aufgerufen wurde, wird der angegebene Wert als ein message nachgelagert propagiert.
stop Beendet den timer Nachrichtenblock.

Geschützte Methoden

Name Beschreibung
nachricht_akzeptieren Akzeptiert eine Nachricht, die von diesem timer Nachrichtenblock angeboten wurde, und überträgt den Besitz an den Anrufer.
consume_message Nutzt eine Nachricht, die zuvor vom timer angeboten und vom Ziel reserviert wurde, und überträgt den Besitz an den Anrufer.
link_target_notification Ein Rückruf, der benachrichtigt, dass ein neues Ziel mit diesem timer Messagingblock verknüpft wurde.
auf_beliebige_Ziele_übertragen Versucht, die vom timer Block erzeugte Nachricht allen verknüpften Zielen anzubieten.
release_message Veröffentlicht eine vorherige Nachrichtenreservierung. (Überschreibt source_block::release_message.)
reserve_message Reserviert eine Nachricht, die zuvor von diesem timer Nachrichtenblock angeboten wurde. (Überschreibt source_block::reserve_message.)
resume_propagation Setzt die Verteilung fort, nachdem eine Reservierung freigegeben wurde. (Überschreibt source_block::resume_propagation.)

Hinweise

Weitere Informationen finden Sie unter "Asynchrone Nachrichtenblöcke".

Vererbungshierarchie

ISource

source_block

timer

Anforderungen

Header: agents.h

Namespace: Parallelität

Nachricht_annehmen

Akzeptiert eine Nachricht, die von diesem timer Nachrichtenblock angeboten wurde, und überträgt den Besitz an den Anrufer.

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

Parameter

_MsgId
Das runtime_object_identity angebotene message Objekt.

Rückgabewert

Ein Zeiger auf das message Objekt, dessen Besitzer der Aufrufer jetzt ist.

Nachricht_verarbeiten

Nutzt eine Nachricht, die zuvor vom timer angeboten und vom Ziel reserviert wurde, und überträgt den Besitz an den Anrufer.

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

Parameter

_MsgId
Das runtime_object_identity Objekt, das message verbraucht wird.

Rückgabewert

Ein Zeiger auf das message Objekt, dessen Besitzer der Aufrufer jetzt ist.

Hinweise

Ähnlich wie accept, wird jedoch immer von einem Aufruf von reserve gefolgt.

Ein Rückruf, der benachrichtigt, dass ein neues Ziel mit diesem timer Messagingblock verknüpft wurde.

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

Parameter

_PTarget
Ein Zeiger auf das neu verknüpfte Ziel.

Pause

Beendet den timer Nachrichtenblock. Wenn es sich um einen wiederholten timer Nachrichtenblock handelt, kann er mit einem nachfolgenden start() Anruf neu gestartet werden. Bei nicht wiederholenden Timern hat dies die gleiche Auswirkung wie ein stop Aufruf.

void pause();

an beliebige Ziele weiterleiten

Versucht, die vom timer Block erzeugte Nachricht allen verknüpften Zielen anzubieten.

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

Freigabebenachrichtigung

Veröffentlicht eine vorherige Nachrichtenreservierung.

virtual void release_message(runtime_object_identity _MsgId);

Parameter

_MsgId
Das runtime_object_identity des message Objekts, das freigegeben wird.

Reservierungsnachricht

Reserviert eine Nachricht, die zuvor von diesem timer Nachrichtenblock angeboten wurde.

virtual bool reserve_message(runtime_object_identity _MsgId);

Parameter

_MsgId
Das runtime_object_identity Objekt, das message reserviert wird.

Rückgabewert

true wenn die Nachricht erfolgreich reserviert wurde, false andernfalls.

Hinweise

Nachdem reserve aufgerufen wurde, wenn true zurückgegeben wird, müssen entweder consume oder release aufgerufen werden, um den Besitz der Nachricht entweder zu übernehmen oder freizugeben.

resume_propagation

Setzt die Verteilung fort, nachdem eine Reservierung freigegeben wurde.

virtual void resume_propagation();

start

Startet den timer Nachrichtenblock. Die angegebene Anzahl von Millisekunden, nachdem diese Methode aufgerufen wurde, wird der angegebene Wert als ein message nachgelagert propagiert.

void start();

Stopp

Beendet den timer Nachrichtenblock.

void stop();

Zeitschaltuhr

Erstellt einen timer Nachrichtenblock, der eine bestimmte Nachricht nach einem angegebenen Intervall auslösen wird.

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

Parameter

_Frau
Die Anzahl der Millisekunden, die nach dem Anruf vergehen müssen, bevor die angegebene Nachricht weitergeleitet wird.

value
Der Wert, der weitergeleitet wird, wenn der Timer abläuft.

_PTarget
Das Ziel, an das der Timer seine Nachricht weitergibt.

_Wiederholung
Wenn true, gibt an, dass der Timer in regelmäßigen Abständen alle _Ms Millisekunden ausgelöst wird.

_Scheduler
Das Scheduler Objekt, in dem die Verteilungsaufgabe für den timer Nachrichtenblock geplant wird, ist terminiert.

_ScheduleGroup
Das ScheduleGroup -Objekt, in dem die Weiterleitungsaufgabe für den timer -Meldungsblock geplant ist. Das verwendete Scheduler -Objekt wird von der Planungsgruppe impliziert.

Hinweise

Die Runtime verwendet das Standardplanungsprogramm, wenn Sie den _Scheduler -Parameter oder den _ScheduleGroup -Parameter nicht angeben.

~Timer

Zerstört einen timer Nachrichtenblock.

~timer();

Siehe auch

Concurrency-Namespace