【发布时间】:2015-06-03 13:10:10
【问题描述】:
所以我查看了 SO 并找到了如何解开匿名事件处理程序的方法,这没问题。但我遇到的问题是如何在事件处理程序本身的实例中解开事件处理程序。
例如我有一个计时器:
System.Timers.Timer aTimer = new System.Timers.Timer();
System.Timers.ElapsedEventHandler handler = ((sender, args)
=>
{
//aTimer.Elapsed -= handler;
wc.CancelAsync();
});
aTimer.Elapsed += handler;
aTimer.Interval = 100000;
aTimer.Enabled = true;
注释掉这行可以正常工作。但后来我意识到可能存在内存泄漏,因为ElapsedEventHandler 从未脱钩。因此,我尝试将注释掉的行添加到我的 ElapsedEventHanlder 以从自身中解开计时器。
但由于错误,我无法编译代码:
使用未赋值的局部变量“handler”
当我的计时器完成时,是否可以取消我的Timer 的Elapsed 事件?
【问题讨论】:
标签: c# timer eventhandler