注册到事件的对象的垃圾收集
本文关键字:对象 事件 注册 | 更新日期: 2023-09-27 18:17:17
我有一个视图对象,它初始化另一个对象creditCard object,并注册到creditCard引发的事件。如果视图对象没有对它的引用。垃圾会被收集吗?还是我必须取消订阅才能实现?
您需要取消对垃圾收集对象的订阅。
"原因很容易解释:当订阅事件处理程序时,事件的发布者通过事件处理程序委托(假设委托是实例方法)持有对订阅者的引用。" - https://stackoverflow.com/a/4526840/283787
当您的creditCard
对象订阅事件时,它将引用您的视图对象。例如,creditCard.Event += MyEvent...
,这相当于creditCard.Event += this.MyEvent...
,其中this
将引用view
对象,因此您必须取消订阅,以便被垃圾收集。