是否可以在C#中执行此类操作?可能与表达式。 EventHandlers不是Control的成员或我拥有的任何类。
E.g:
Microsoft.Win32.SystemEvents.SessionSwitch += new Microsoft.Win32.SessionSwitchEventHandler(SystemEvents_SessionSwitch);
EventHandler是我不拥有的静态引用。如何将该类型的语句传递给以下函数?
private void RegisterEvent(EventHandler handler, Action<EventArgs> action)
{
handler += action;
m_toUnsubscribe.Add(handler, action);
}
... in Dispose()
{
foreach(var pair in m_toUnsubscribe)
{
pair.handler -= pair.action;
}
}
答案 0 :(得分:3)
如论坛帖子中所述,您可以在对象的dispose方法中将事件设置为null。当然,这需要您的班级实现IDisposable。
此处链接:http://channel9.msdn.com/forums/TechOff/148255-Event-disposal/
答案 1 :(得分:0)
您可以查看this post并使用我发布的答案。 Suppress函数将从控件中删除处理程序。您可以根据自己的需要进行更多修改。