Winform中使用System.Windows.Forms.Timer多次启动停止计时器时绑定事件会重复多次执行

场景

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

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

以上关于定时器的使用。

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

联想到如下情况

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

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

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

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

注:

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

实现

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可达(可用)_霸道流氓气质的博客-CSDN博客

你可能感兴趣的:(C#,c#)