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

发布时间 2023-09-25 14:01:48作者: 霸道流氓

场景

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

https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/106274074

以上关于定时器的使用。

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

联想到如下情况

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

https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/102607889

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

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

注:

博客:
https://blog.csdn.net/badao_liumang_qizhi

实现

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可达(可用):

https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/133271443