繁体   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