可能重复:
Weak references
我理解弱引用的概念,但我无法找到在C#中应该使用弱引用的位置。
答案 0 :(得分:4)
在实现EventAggregator模式时,使用WeakReference的一个很好的例子。
说你有代码
eventAggregator.Subscribe<AnEventType>(this.DoSomethingDelegate);
然后,如果您不希望发生潜在的内存泄漏,那么您将特别要取消订阅。有关详细信息,请参阅Explicitly Removing Event Handlers。
但是,如果EventAggregator的内部使用弱引用保持DoSomethingDelegate,则不需要取消订阅。
为了进一步学习,我建议您使用EventAggregator in the Microsoft Practices library查看ILSpy的实施情况。这在内部使用WeakReferenceDelegate类型,它包装Weakdelegate并允许订阅而不显式取消订阅,并且没有内存泄漏的可能性。
致以最诚挚的问候,