注册到事件的对象的垃圾收集

时间:2016-11-10 07:04:51

标签: c# .net events garbage-collection

我有一个view对象初始化另一个对象,creditCard对象,并注册到creditCard正在筹集的事件。如果视图对象没有引用它。它会被垃圾收集吗?或者我是否必须取消订阅才能实现这一目标?

2 个答案:

答案 0 :(得分:0)

您需要取消订阅该对象才能进行垃圾回收。

“原因很简单:在订阅事件处理程序时,事件的发布者通过事件处理程序委托保存对订阅者的引用(假设委托是实例方法)。” em> - https://stackoverflow.com/a/4526840/283787

答案 1 :(得分:0)

当您的creditCard对象订阅事件时,ti将引用您的视图对象。例如creditCard.Event += MyEvent...,这相当于creditCard.Event += this.MyEvent...,其中this将引用view对象,因此您必须取消订阅才能进行垃圾回收。