[英]emddudley's WeakEventManager's sample
我正在嘗試將Michael Dudley的示例代碼改編為自己的弱事件管理器實現:
使用.NET的WeakEventManager實現弱事件的示例實現
我想知道如何將我的用戶代碼放在我自己的處理程序中? 我看到這個:
private EventHandler mHandler = (s, e) =>
{
CurrentManager.DeliverEvent(s, e);
return;
};
我會用自己的自定義代碼替換該表達式的內容嗎?
謝謝,
凱文
在大多數情況下,處理程序應保持原樣。 作為對該答案的評論,甚至不需要處理程序聲明。 以下代碼用於StartListening
應該足夠了:
((PropertyValue)source).Changed += DeliverEvent;
如果在傳遞事件之前需要修改s
和/或e
的值,則可以將該代碼添加到發布的處理程序中。 但是無論如何, DeliverEvent
必須調用DeliverEvent
。 它循環並為所有注冊的偵聽器調用ReceiveWeakEvent
,除非您將它們存儲在自己的ListenerList
中,否則無法獲得偵聽ListenerList
。 因此,基本上,如果您修改事件處理程序,它仍必須調用DeliverEvent
否則您的弱事件偵聽器將永遠不會收到該事件的通知。
如果您發布了要查找位置的代碼,可能會更容易一些,以幫助您弄清要完成的任務以及應該去的地方。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.