timer 類別

timer 傳訊區塊是單一目標 source_block,能夠在經過指定的時間長度或在特定時間間隔,將訊息傳送至它的目標。

語法

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

參數

T
這個區塊之輸出訊息的承載類型。

成員

公用建構函式

名稱 描述
計時 器 已多載。 timer建構傳訊區塊,該區塊會在指定的間隔之後引發指定的訊息。
~timer 解構函式 timer終結傳訊區塊。

公用方法

名稱 描述
pause timer停止傳訊區塊。 如果是重複傳 timer 訊區塊,則可以使用後續 start() 呼叫重新開機。 對於非重複計時器,這與呼叫的效果相同 stop
start timer啟動傳訊區塊。 呼叫這個 之後的指定毫秒數,指定的值將會以 將下游傳播為 message
停止 timer停止傳訊區塊。

受保護的方法

名稱 描述
accept_message 接受此 timer 傳訊區塊所提供的訊息,並將擁有權轉移給呼叫端。
consume_message 取用先前由 timer 目標提供的 訊息,並將擁有權轉移給呼叫端。
link_target_notification 回呼,通知新目標已連結至此 timer 傳訊區塊。
propagate_to_any_targets 嘗試將 區塊所產生的 timer 訊息提供給所有連結的目標。
release_message 釋放先前的訊息保留。 (覆寫 source_block::release_message .
reserve_message 保留此 timer 傳訊區塊先前提供的訊息。 (覆寫 source_block::reserve_message .
resume_propagation 在發行保留之後繼續傳播。 (覆寫 source_block::resume_propagation .

備註

如需詳細資訊,請參閱 非同步消息塊

繼承階層架構

ISource

source_block

timer

需求

標頭: agents.h

命名空間: concurrency

accept_message

接受此 timer 傳訊區塊所提供的訊息,並將擁有權轉移給呼叫端。

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

參數

_MsgId
runtime_object_identity所提供 message 物件的 。

傳回值

呼叫端現在擁有其擁有權的物件指標 message

consume_message

取用先前由 timer 目標提供的 訊息,並將擁有權轉移給呼叫端。

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

參數

_MsgId
runtime_object_identitymessage 所取用物件的 。

傳回值

呼叫端現在擁有其擁有權的物件指標 message

備註

類似于 accept ,但前面一律會呼叫 reserve

回呼,通知新目標已連結至此 timer 傳訊區塊。

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

參數

_PTarget
新連結目標的指標。

pause

timer停止傳訊區塊。 如果是重複傳 timer 訊區塊,則可以使用後續 start() 呼叫重新開機。 對於非重複計時器,這與呼叫的效果相同 stop

void pause();

propagate_to_any_targets

嘗試將 區塊所產生的 timer 訊息提供給所有連結的目標。

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

release_message

釋放先前的訊息保留。

virtual void release_message(runtime_object_identity _MsgId);

參數

_MsgId
runtime_object_identity要釋放之 message 物件的 。

reserve_message

保留此 timer 傳訊區塊先前提供的訊息。

virtual bool reserve_message(runtime_object_identity _MsgId);

參數

_MsgId
runtime_object_identity要保留之 message 物件的 。

傳回值

true 如果已成功保留訊息,則為 , false 否則為 。

備註

呼叫 之後 reserve ,如果傳回 trueconsume 則必須呼叫 或 release 以取得或釋放訊息的擁有權。

resume_propagation

在發行保留之後繼續傳播。

virtual void resume_propagation();

start

timer啟動傳訊區塊。 呼叫這個 之後的指定毫秒數,指定的值將會以 將下游傳播為 message

void start();

停止

timer停止傳訊區塊。

void stop();

計時器

timer建構傳訊區塊,該區塊會在指定的間隔之後引發指定的訊息。

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

參數

_女士
呼叫之後必須經過的毫秒數,才能將指定的訊息傳播到下游。

value
當計時器經過時,將會在下游傳播的值。

_PTarget
計時器將傳播其訊息的目標。

_重複
如果為 true,表示計時器會每隔毫秒定期引發一次 _Ms

_調度
Scheduler 程傳訊區塊傳播工作 timer 所在的物件。

_ScheduleGroup
ScheduleGroup 物件,在其內會排定 timer 傳訊區塊的傳播工作。 所使用的 Scheduler 物件由排程群組所隱含。

備註

如果您未指定 _Scheduler_ScheduleGroup 參數,執行階段會使用預設排程器。

~計時 器

timer終結傳訊區塊。

~timer();

另請參閱

concurrency 命名空間