前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >C# System.Timers.Timer调用Stop后未停止

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

原创
作者头像
我想变得积极乐观
发布2024-02-01 19:21:52
930
发布2024-02-01 19:21:52
举报
文章被收录于专栏:C#后端开发C#后端开发

发现问题:在定时器事件处理程序以外,调用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()关定时器,必须把判断写在定时器的事件处理程序内调用。

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

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档