我有一个发布一些事件的静态类。所以我有许多不同的小类,它们有不同的生命周期来订阅这个事件。
我现在发现这会导致内存“泄漏”,因为订阅类在订阅一个更长寿的事件时仍然存在。我知道这是通过使用内存分析器发生的,并且我读到了这个问题。
我无法手动取消订阅,因为列表中可能有数百个“客户”。此列表将被清除。所以我不能(也不想)手动取消订阅。
我读到“弱事件模式”在这里可能会有所帮助。有人可以引导我采用一种“简单”的方式来实现这一点吗?到目前为止,我发现的所有内容要么太简单而无法在实践中使用,要么太复杂而无法在一开始就理解。
或者这种情况有什么“最佳实践”吗?
提前致谢!
更新: 根据 jbl 的回答,我发现这个(http://blogs.msdn.com/b/greg_schechter/archive/2004/05/27/143605.aspx)是一种可能的解决方案。这里有什么意见吗?它相当旧(2004 年),所以可能有更好的解决方案吗?