Winform中使用System.Windows.Forms.Timer多次启动停止计时器时绑定事件会重复多次执行
  9BvoR1irARnU 2023年11月02日 35 0


场景

C#中实现计时器功能(定时任务和计时多长时间后执行某方法):

C#中实现计时器功能(定时任务和计时多长时间后执行某方法)_c#定时器5分钟_霸道流氓气质的博客-

以上关于定时器的使用。

在实现点击按钮启动定时器,点击停止按钮停止定时器时发现,重复多次后会导致定时器方法累计重复执行。

联想到如下情况

C#中窗口关闭时没有取消事件订阅导致事件重复执行的解决方法:

C#中窗口关闭时没有取消事件订阅导致事件重复执行的解决方法_事件重复绑定 c#_霸道流氓气质的博客

所以想到在停止定时器时只是简单的stop执行了,没有对定时器具体执行的方法解除绑定,

因为Timer是在初始化一次的,并不是每次都new一个,所以需要在停止定时器时对执行方法解除绑定。

注:

博客:
霸道流氓气质_C#,架构之路,SpringBoot

实现

1、初始化定时器

Timer _timer = new Timer();

作为类变量使用

2、启动定时器

_timer.Interval = scheduleInterval;                 
_timer.Tick += _timer_Tick;
_timer.Start();

3、停止定时器

_timer.Tick -= _timer_Tick;
_timer.Stop();

4、具体业务场景参考

C#中实现定时器Timer定时判断IP是否ping通(连通)和端口号是否telnet可达(可用):

C#中实现定时器Timer定时判断IP是否ping通(连通)和端口号是否telnet可达(可用)_霸道流氓气质的博客

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

推荐阅读
9BvoR1irARnU