2
所以我看着SO,發現如何解除匿名事件處理程序,這是沒有問題的。但是我遇到的問題是如何在事件處理程序本身的實例中解除事件處理程序。如何在lambda方法內解開一個lambda事件處理程序?
比如我有一個計時器:
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
中以從本身解除定時器。
但我不能編譯代碼,因爲錯誤的:
Use of unassigned local variable "handler"
是否可以解開Elapsed
事件我Timer
我的計時器完成時?