C# System.Timers.Timer调用Stop后未停止

2024-02-01 19:21:52 浏览数 (3)

发现问题:在定时器事件处理程序以外,调用timer.Stop()方法,定时器不会停止,还在存活。

解决方案:将Stop方法的调用,放在 定时器的事件处理程序内部。

举例

当主线程执行完毕,为空后,我想停止timer_Get32IO时钟,代码可以这么写。

此时,如果主线程为空,定时器会停下。如果不为空,定时器则继续运行。

代码语言:csharp复制
public static Timer timer_Get32IO = new Timer();
timer_Get32IO.Interval = 200;
timer_Get32IO.Elapsed  = new ElapsedEventHandler(timer_Get32IOTick);

private void timer_Get32IOTick(object sender, EventArgs e)
{
    timer_Get32IO.Stop();

    if(ThreadMain != null)
    {
        Test_sysnet.ClientSendToSer(DI_DO16.GetDI16State, sendtype.get_input);
        Test_sysnet.ClientSendToSer(DI_DO16.GetDO16State, sendtype.get_output);
        timer_Get32IO.Start();
    }
}

启发:使用System.Timers.Timer下的定时器,想在某条件发生时,调用Stop()关定时器,必须把判断写在定时器的事件处理程序内调用。

创作不易,如果有帮助,一键三连吧!

0 人点赞