c# timer 销毁_C# System.Threading.Timer如何停止

本文档展示了如何在C#中使用System.Threading.Timer创建一个提醒功能,并探讨了如何正确地停止和销毁Timer。在Reminder类中,创建了一个Timer实例,并在Check方法中设置了一个定时检查任务。状态检查器类(StatusChecker)用于执行实际的检查工作。在Form1加载时,创建Reminder实例并启动定时检查。问题在于如何在不立即销毁Timer的情况下,从Form中控制Timer的启停。
摘要由CSDN通过智能技术生成

usingSystem;usingSystem.Threading;namespaceReminder{publicclassReminder{publicTimerstateTimer;publicvoidCheck(){AutoResetEventautoEvent=newAutoResetEvent(false);StatusChe...

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();

这三条后来测试用的,不是原来代码

展开

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值