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;
};
我是否会将该表达式的内容替换为我自己的自定义代码?
谢谢
凯文
在大多数情况下,处理程序应保持原样。正如对该答案的注释所述,处理程序声明甚至不是必需的。以下StartListening
代码就足够了:
((PropertyValue)source).Changed += DeliverEvent;
如果需要在传递事件之前修改 s
和/或 e
的值,可以将该代码添加到您发布的处理程序中。但无论如何,DeliverEvent
必须被召唤。它循环并调用所有注册侦听器的ReceiveWeakEvent
,除非您将它们存储在自己的ListenerList
中,否则无法获取侦听器列表。因此,基本上,如果您修改事件处理程序,它仍然必须调用DeliverEvent
否则您的弱事件侦听器将永远不会收到该事件的通知。
如果您发布了要查找位置的代码,那么帮助您弄清楚要完成的目标以及它应该去哪里可能会容易一些。