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

文章讲述了如何在C#中正确使用System.Timers.Timer的Stop()方法,强调了必须在定时器的Elapsed事件处理程序内部调用以确保定时器在主线程空闲时能被停止。
摘要由CSDN通过智能技术生成

发现问题:在定时器事件处理程序以外,调用timer.Stop()方法,定时器不会停止,还在存活。
解决方案:将Stop方法的调用,放在 定时器的事件处理程序内部。
举例:
当主线程执行完毕,为空后,我想停止timer_Get32IO时钟,代码可以这么写。
此时,如果主线程为空,定时器会停下。如果不为空,定时器则继续运行。

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()关定时器,在定时器的事件处理程序内调用

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值