委托会导致内存泄漏吗?

2024-04-28

委托会导致内存泄漏吗?

我的意思是,例如如果一个班级A包含一个ADelegate后者指向BMethod (of Bclass) 这是否可以阻止 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(使用前将#替换为@)

委托会导致内存泄漏吗? 的相关文章

随机推荐