【问题标题】:emddudley's WeakEventManager's sampleemddudley 的 WeakEventManager 的示例
【发布时间】:2012-05-08 14:47:11
【问题描述】:

我正在尝试将 Michael Dudley 的示例代码改编为我自己的弱事件管理器实现:

Example implementation of weak events using .NET's WeakEventManager

我想知道我应该把我自己的处理程序的用户代码放在哪里?我看到了:

private EventHandler mHandler = (s, e) =>
{
    CurrentManager.DeliverEvent(s, e);
    return;
};

我会用我自己的自定义代码替换那个表达式的内容吗?

谢谢,

凯文

【问题讨论】:

    标签: c# .net weak-events weakeventmanager


    【解决方案1】:

    在大多数情况下,处理程序应该保持原样。正如对该答案的评论所述,处理程序声明甚至不是必需的。 StartListening 的以下代码就足够了:

    ((PropertyValue)source).Changed += DeliverEvent;

    如果您需要在传递事件之前修改s 和/或e 的值,您可以将该代码添加到您发布的处理程序中。但无论如何,必须调用DeliverEvent。它循环并为所有注册的侦听器调用ReceiveWeakEvent,除非您将它们存储在自己的ListenerList 中,否则无法获取侦听器列表。所以,基本上如果你修改事件处理程序,它仍然必须调用DeliverEvent,否则你的弱事件监听器将永远不会收到事件的通知。

    如果您发布了您想要找到位置的代码,那么可能会更容易帮助您弄清楚您想要完成什么以及它应该去哪里。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-09-24
      相关资源
      最近更新 更多