emddudley's WeakEventManager's sample

本文关键字:sample WeakEventManager emddudley | 更新日期: 2023-09-27 18:33:27

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

使用 .NET 的弱事件管理器实现弱事件的示例

我想知道我将自己的处理程序的用户代码放在哪里?我看到这个:

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

是否会将该表达式的内容替换为我自己的自定义代码?

谢谢

凯文

emddudley's WeakEventManager's sample

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

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

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

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