我有一个问题,即最小定时器事件不会触发时它应该是,我将它设置为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线程的线程中运行(异常可能会减慢速度)吗? –