C# winform中timer函数如何停止,点运行后可再次启动周期事件

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C# winform中timer函数如何停止,点运行后可再次启动周期事件相关的知识,希望对你有一定的参考价值。

参考技术A 在同一个按钮事件中写入代码:
if(timer.Enable
==
true)
timer.Enable
=
false;//timer在运行时点击该按钮则停止计时

else
timer.Enable
=
true;//timer停止时点击该按钮timer开始计时
参考技术B 同上,Timer没有给出诸如Stop()一类的方法,使用Enable属性完全可以实现相应功能(这也意味着,即便提供Stop()方法,也将是在方法中设置Enable属性而已)。 参考技术C 为什么我的timer就有停止方法,timer.Stop()直接可以调用啊,再运行时timer.Start()

C# System.Threading.Timer如何停止

using System;
using System.Threading;

namespace Reminder

public class Reminder

public Timer stateTimer;
public void Check()

AutoResetEvent autoEvent = new AutoResetEvent(false);
StatusChecker statusChecher = new StatusChecker();
TimerCallback tcb = statusChecher.CheckInventory;
stateTimer = new Timer(tcb, autoEvent, 1000, 5000);
//autoEvent.WaitOne(1, false);
stateTimer.Change(5000, 1000);
stateTimer.Dispose();



class StatusChecker

public void CheckInventory(object stateInfo)

AutoResetEvent autoEvent = (AutoResetEvent)stateInfo;
int inventoryShortageCount = 5;
if (inventoryShortageCount > 0)

System.Windows.Forms.MessageBox.Show("");





在Form里面调用
private void Form1_Load(object sender, EventArgs e)

Reminder r = new Reminder();
r.Check();
//r.stateTimer.Dispose();
//如果这样,Timer就直接被Dispose掉了,如何才能在Form里面随意停止Timer

autoEvent.WaitOne(1, false);
stateTimer.Change(5000, 1000);
stateTimer.Dispose();
这三条后来测试用的,不是原来代码

Threading.Timer 属于100% 多线程
Timers.Timer 默认多线程,可设置为单线程
既然是多线程,不管通过回调 还是事件 执行任务,都是开启的另一个线程;
你可以暂停或销毁计时器(Timer)本身,但是不能操作里面新开线程的任务,这也是多线程设计的期望方式,因为你不知道 超线程里面到底执行到哪儿了。
但是,像我这种(刁民)有时候就喜欢那么横,所以就把 新开的任务装在一个 new Thread()里面,这样就可以操作这个线程了,(到时只需要暴力abort() 终止这个线程就行)。

Threading.Timer 暂停: Change(-1,任意值); 启动: Change(大于等于0,时间间隔);
Timers.Timer 暂停: Stop(); 启动:Start();
再次提醒,这里暂停的意思是 计时器不在重新启动,不是终止计时器的里面任务。
参考技术A stateTimer.Change(-1, 任意值);就可以停止。
Threading.Timer 没有Enabled属性。
参考技术B timer.stop()调用停止的方法呀,timer.start()开始 开始和停止是对应的呀 参考技术C timer enabled属性改为false试试。 参考技术D stateTimer.Enable=false;
stateTimer.Dispose();

以上是关于C# winform中timer函数如何停止,点运行后可再次启动周期事件的主要内容,如果未能解决你的问题,请参考以下文章

如何在 C# winform 中每分钟自动调用一个方法

c# timer停止不了,请问如何解决

C#WinForm中如何实现长摁一个按钮button实现循环执行一个操作,放开就停止执行

C# winform程序,UI界面锁死。如何处理?

C# System.Threading.Timer如何停止

c# Timer异常停止