c# - 自动取消订阅事件

标签 c# events

在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/

相关文章:

c# - 如何将非数组 json 反序列化为实现 List<T> 的子类?

c# - 消息框出现两次 C#

c# - 限制服务总线消息接收的 Azure Functions 速率

jquery - 有没有 jQuery .change 实时替代方案?

windows - Visual C++ MFC 中窗口启动时的事件顺序

vba - Excel 加载项如何响应任何工作表中的事件?

c# - HttpClientHandler :Dispose (bool )' is inaccessible from method ` System.Net.ServicePointManager:CloseConnectionGroup(字符串)

c# - 通过网络传递消息

java - 干净地处理事件

Silverlight Prism 区域事件