weak-events

    1熱度

    1回答

    我試圖適應邁克爾·達德利的示例代碼爲我自己的實現弱事件管理: Example implementation of weak events using .NET's WeakEventManager 我不知道我會在哪裏把我的用戶代碼爲我自己的處理程序?我看到這個: private EventHandler mHandler = (s, e) => { CurrentManager.Del

    15熱度

    1回答

    我目前正在學習WPF,並且已經發現了弱事件的概念,但我真的很努力'明白'。我已閱讀#1無數的文章,看了看代碼樣本,但它只是沒有在沉沒 這裏是我的困境: 我明白,當一個對象訂閱的事件,的源事件必須持有對用戶的參考。 我也明白,如果訂閱者超出範圍或被明確銷燬但事件源未被銷燬,則訂閱者不會被垃圾收集,因爲事件源仍保留對訂閱者的引用。 避免這種情況的常用方法是在對象被銷燬之前從訂閱源中顯式取消訂閱訂閱者。

    2熱度

    2回答

    標準的事件處理程序(與操作者+ =)是存儲器泄漏原因之一(如果不是unresgistered /設置(帶- =操作者))。 PropertyChangedEventManager,CollectionChangedEventManager,CurrentChangedEventManager,ErrorsChangedEventManager等: 而微軟與WeakEventManager的及其繼承

    2熱度

    1回答

    我使用弱事件的時候,我不能確定地退訂(否則我寧願+=和-=而不是弱事件): class SomeType { public SomeType(...) { // object doesn't know when it will be removed WeakEventManager(SomeSource, EventArgs).AddHandler(s

    4熱度

    1回答

    我不喜歡不符合標準的模式,但我正在對我的應用程序進行快速測試,並且碰到了這種奇怪的行爲。 考慮一個暴露事件的普通類,這裏是非常常見的PropertyChanged,但我認爲可以是任何其他類。 用戶選擇通過WeakEventManager助手訂閱事件。現在,「奇怪」的事情是實際的發件人引用:只要實例與訂閱時使用的實例相同,一切都會正常進行。但是,當您使用其他對象時,不會發出通知。 再一次,這是不是一

    0熱度

    1回答

    我不能重現這個問題(並且項目太大而無法在此處發佈,另外我不確定相關部分要發佈什麼),我需要什麼可能的想法這裏出錯了。 我有一個靜態的事件 public abstract partial class A : Base { public static event EventHandler Test; public static void OnTest() => Test?.Inv

    3熱度

    1回答

    我瞭解弱參考和弱事件模式。 使用弱事件模式的一個地方是在Controls和DataModel之間的DataBinding中。 在DataBinding的過程中,如果DataModel支持INotifyPropertyChange,則控件將要求DataModel通過事件向他建議更改。如果沒有弱事件,DataModel會保留對控件的強烈參考。由於該參考,該窗口可用於GC的同時,該控件不能被標記爲可用於

    1熱度

    1回答

    我附加到第三方,長時間生活已刪除的事件發佈程序,最終由於事件處理程序而使我的可能的短期對象保持活動狀態。 Deleted事件很可能永遠不會觸發,我只需要處理事情。不清楚從何處取消已刪除的事件,因此我想要對其進行弱引用,以便我的對象可以被GC'd。 我已經看到了很多非常複雜的方法來創建弱事件處理程序,但下面的代碼片段似乎可以做到這一點,至少在提供的測試代碼片段中。這是瘋了還是可以工作? (http:

    4熱度

    2回答

    我一直在尋找使用弱事件模式訂閱事件。使用.NET 4.5框架,我們有一個漂亮的WeakEventManager類。弱訂閱事件就如此簡單 WeakEventManager<EventSource, SomeEventEventArgs>.AddHandler(source, "SomeEvent", source_SomeEvent); 但是,我並不是'字符串型'代碼的忠實粉絲。我一直在試圖找到

    7熱度

    1回答

    我想在使用Reactive庫的PCL中實現WeakEventManager。 所以問題是它保持訂閱者的弱引用,並且每次事件觸發 - 它獲取訂閱者的代理並觸發它,但是如果他無法從弱引用獲取對象,則它會處理與代表的鏈接。 問題是,在短時間之後,弱引用返回null(但用戶仍然活着),之後正在執行鏈接處理。所以我的問題是爲什麼會發生這種情況以及如何解決這個問題? 這怎麼看起來像:(看筆記中的代碼) pri