我有一個問題,即最小定時器事件不會觸發時它應該是,我將它設置爲500毫秒的間隔,但正如我在我的logg中可以看到,這不符合預期的工作。我希望代碼在等待0.5秒後執行,然後再次開始執行!定時器不間隔觸發
public void initilize_Rfid()
{
_timerComm = new System.Timers.Timer(500);
_timerComm.Elapsed += CommTimerEvent;
_timerComm.Enabled = true;
}
private void CommTimerEvent(object source, ElapsedEventArgs e)
{
try
{
_timerComm.Enabled = false;
Logg("Inside CommTimerEvent " + _name);
//TALKING TO A SERIALPORT AND DETERMENATING IF TO CONTINUE WITH THE TIMER
if ((_continueTimer)
{
_timerComm.Enabled = true;
Logg("Re-activating timer " + _name);
}
}
catch (Exception ex) { Logg(ex.ToString()); }
}
我可以看到文本「Inisde ComTimerEvent TEST1」,然後約0.8秒後,我得到了我的「重新激活計時器TEST1」。這一切都很好。但是在此之後,我得到一個長達3秒的延遲,直到定時器再次啓動...我能以某種方式防止這種情況發生嗎?
'System.Timers.Timer'它具有'AutoReset'屬性。將其設置爲false並且計時器將只運行一次。然後,在計時器方法中,像你一樣再次啓動它。這樣你就不需要一直停止/啓動計時器。 –
好的,但是能解決我的問題嗎?由於問題在於,即使您將其設置爲啓用,計時器在正確的時間也沒有被觸發... – Nick3
當輸入事件處理程序時,您可以確定計時器已停止。你不需要關心停止它。停止/啓動的開銷可能會影響計時器的行爲。但是,使用'System.Timers.Timer'時我從來沒有注意到這些問題。啓動計時器後你確定沒有做其他事嗎?你確定你明白'System.Timers.Timer'事件在不同於UI線程的線程中運行(異常可能會減慢速度)嗎? –