这是使用System.Timers.Timer的正确方法吗? 我的意思是...我创建计时器,设置要在Elapsed事件上调用的时间间隔和方法。System.Timers.Timer生命周期
double ms = 1000;
var t = new System.Timers.Timer(ms);
t.AutoReset = false;
t.Elapsed += (sender, e) => { runTask(); };
t.Start();
下一步是什么?应该在定时器上处理一个呼叫吗?我想我不能,或者Elapsed事件永远不会发生。 我应该在一些全局变量中注册Timer以避免丢失对它的引用,因此GC可以在调用Elapsed之前处置该计时器? 如果是这样,一旦处理了Elapsed事件(因此我的任务已经执行),我该如何处理Timer呢?
如果Timer在Form A上创建并且用户退出应用程序(如果任务尝试访问表单控件时发生异常,它发生在我身上一次),这可能会产生问题。 – 2011-02-10 10:38:43
@Mohib Sheth:我的回答是如何保护定时器免于被处置..明显地停止它,你将需要调用Stop()。如果您可以在需要时取消订阅您的事件处理程序,那也更好。亚历克西斯已经解释过它.... – 2011-02-10 13:44:14