委托会导致内存泄漏吗?
我的意思是,例如如果一个班级A
包含一个ADelegate
后者指向BMethod
(of B
class) 这是否可以阻止 GC 收集 A 类或 B 类?
如果是这样,我们如何“释放”代表(设置ADeletate = Nothing
/ 无效的?)
对此你怎么评论:
//Class A Finalize, containing ADelegateInstance as ADelegate'
protected override void Finalize()
{
ADelegateInstance =
(ADelegate)System.Delegate.RemoveAll(
ADelegateInstance, ADelegateInstance);
ADelegateInstance = null;
base.Finalize();
}
'Class A Finalize, containing ADelegateInstance as ADelegate'
Protected Overrides Sub Finalize()
ADelegateInstance = _
CType(System.Delegate.RemoveAll(ADelegateInstance, ADelegateInstance), _
ADelegate)
ADelegateInstance = Nothing
MyBase.Finalize()
End Sub
是的,除非您取消订阅该活动,否则引用将保持活动状态:
someObject.SomeEvent -= SomeDelegate;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)