在C#中可以做这样的事情吗?可能是用表达式。 EventHandler 不是 Control 或我拥有的任何类的成员。
例如:
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;
}
}
最佳答案
就像论坛主题中所描述的那样,您可以在对象的 dispose 方法中将事件设置为 null。当然,这需要您的类实现 IDisposable。
这里是链接:http://channel9.msdn.com/forums/TechOff/148255-Event-disposal/
关于c# - 自动取消订阅事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2759663/