一千萬個為什麽

搜索

自動取消訂閱活動

是否有可能在C#中做這樣的事情?可能與表達式。 EventHandlers不是Control的成員或我擁有的任何類。

例如。:

Microsoft.Win32.SystemEvents.SessionSwitch += new Microsoft.Win32.SessionSwitchEventHandler(SystemEvents_SessionSwitch);

EventHandler是我不擁有的靜態引用。如何將該類型的語句傳遞給以下函數?

private void RegisterEvent(EventHandler handler, Action action)
{
   handler += action;
   m_toUnsubscribe.Add(handler, action);
}

... in Dispose()
{
  foreach(var pair in m_toUnsubscribe)
  {
    pair.handler -= pair.action;
  }
}

最佳答案

與論壇主題中描述的一樣,您可以在對象的dispose方法中將事件設置為null。當然,這需要您的類實現IDisposable。

Here the link: http://channel9.msdn.com/forums/TechOff/148255-Event-disposal/

轉載註明原文: 自動取消訂閱活動