我正在與在Windows服務的System.Timers.Timer一個問題。我基本上用下面的代碼設置定時器了在鹼輪詢服務類:System.Timers.Timer間隔復位造成重啓
_serviceTimer.Elapsed += OnElapsedTime;
_serviceTimer.Interval = ServiceTimerInterval.TotalMilliseconds;
_serviceTimer.AutoReset = false;
_serviceTimer.Enabled = true;
當OnElapsedTime火災,我要禁用計時器和間隔設置爲基於查找不同的值。問題是當我改變它實際重新啓動定時器的時間間隔時。在msndn文檔中提到了這種奇怪的行爲:
注意: 如果Enabled和AutoReset都設置爲false,並且定時器先前已啓用,則設置Interval屬性會導致Elapsed事件一次,如如果Enabled屬性已被設置爲true。要設置間隔而不引發事件,可以暫時將AutoReset屬性設置爲true。 Timer.Interval
在onelapsed事件中,我有這樣的:
_serviceTimer.Enabled = false;
double newIntervalSetting = newSetting;
base._serviceTimer.AutoReset = true;
base._serviceTimer.Interval = newIntervalSetting;
base._serviceTimer.AutoReset = false;
//reenable after processing
的問題是間隔變化仍然開始倒計時,最終觸發中斷,即使我要改變自動復位設置爲true之前的事件間隔。啓用的時間始終保持爲假,但事件仍然發生。我不確定我是否誤解了msdn文檔中有關正確的方法。誰能幫我嗎?
是啊,這是一個悲慘的類。這就是爲什麼存在System.Threading.Timer。 – 2011-03-29 22:18:47
是的,它確實似乎有限制。我想我會使用下面的快捷方式,然後在我有機會時切換它。 – gleasonomicon 2011-03-30 15:01:34