定时器不按间隔触发

时间:2014-01-23 12:34:38

标签: c# timer

我有一个问题,即min timer事件应该被触发,我将它设置为500ms的间隔,但正如我在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秒的延迟,直到计时器再次发射...我能以某种方式阻止它吗?

2 个答案:

答案 0 :(得分:1)

相反,您可以使用DispatcherTimer。以下代码将帮助您每5秒触发一次方法。

DispatcherTimer LabelTimer = new DispatcherTimer();
                        LabelTimer.Interval = TimeSpan.FromSeconds(5);
                        LabelTimer.Tick += new EventHandler(TaskTimer_Tick_THROW);

答案 1 :(得分:0)

你错过了:

 _timerComm.Start();

这将启动计时器。如果你这样说:

public void initilize_Rfid()
{
    _timerComm = new System.Timers.Timer(500);
    _timerComm.Elapsed += CommTimerEvent;
    _timerComm.Enabled = true;
    _timerComm.Start();
}

如果您调用此方法,您的代码应该有效。