2013-08-19 70 views
0

事件处理程序委托如何删除自己?事件处理程序委托可以自行删除

这样的代码

void timerTick(object sender, EventArgs e) 
    { 
     if (!IsHolding){ 
      return; 
     } 

     UtilityStoryboardManager.PlayerStoryboard("End", (_) =>{ 
      IsHolding = false; 
      //call some function or perform some logic 
      timer.Stop(); 
      //How Can a eventhandler delegate remove itself ?? 
      //timer.Tick -= timerTick; 
     }, null); 
    } 
+10

你试过了吗? ;) –

回答

0

你试图做这样的事情?

void timerTick(object sender, EventArgs e) 
{ 
    if (!IsHolding){ 
     return; 
    } 

    UtilityStoryboardManager.PlayerStoryboard("End", (_) =>{ 
     IsHolding = false; 
     //call some function or perform some logic 
     timer.Stop(); 
     //How Can a eventhandler delegate remove itself ?? 
     //timer.Tick -= timerTick; 
    }, null); 
(sender as Timer).Tick-=timerTick; // removes the event 
}