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. |
備註
如需詳細資訊,請參閱 異步消息塊。
繼承階層架構
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_identity
message
選擇物件的 。
傳回值
呼叫端現在擁有其擁有權的物件指標 message
。
備註
類似於 accept
,但前面一律會呼叫 reserve
。
link_target_notification
回呼,通知新目標已連結至此 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
,如果傳回 true
, consume
則必須呼叫 或 release
以取得或釋放訊息的擁有權。
resume_propagation
在發行保留之後繼續傳播。
virtual void resume_propagation();
start
timer
啟動傳訊區塊。 呼叫這個 之後的指定毫秒數,指定的值將會以 將下游傳播為 message
。
void start();
stop
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();