簡體   English   中英

.net c# WeakEventManager理論與實際使用

[英].net c# WeakEventManager theory and practical usage

嗨,我不清楚 .net 中 WeakEventManager 的用法。

我知道強參考和周參考之間的區別。

  1. 保持強直到取消訂閱沒有發生。
  2. week - 調用 GC 收集時 =>“非確定性時間”

在第二種情況下,我會錯過事件,因為可以隨機刪除偵聽器。 或者我錯過了什么?

例如 MVVM 社區工具包使用此模式在視圖模型之間發送/接收消息。 但是什么時候可以“隨機”刪除消息永遠不會出現。

有人能解釋一下這種模式和安全性嗎? 謝謝

對 object 的正常引用是強引用。 此外,.Net 提供了一個特殊的 class 用於為特殊情況創建對對象的弱引用。 Microsoft 文檔說 GC 無法收集應用程序正在使用的 object,而應用程序的代碼可以到達 object。 據說該應用程序強烈引用了 object。 (在此處查找弱參考說明Microsoft Wark 參考文檔)。

因此,不能在 memory 仍然被應用程序使用時,即當它仍然具有強引用時,從 memory 中隨機刪除它。 例如,引用視圖 model class 的窗口的 DataContext 屬性是對視圖 model 的強引用。 如果使用弱事件管理器,它只保留對已注冊監聽器的弱引用,因此如果沒有找到其他強引用(因為應用程序的 rest 不再使用 object),則允許 GC 收集 ZA8CFDE8311BD59EB2AC96C。 就應用程序而言,它不會導致任何問題,因為應用程序無論如何都不使用 object。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM