【发布时间】:2010-02-09 08:46:43
【问题描述】:
委托会导致内存泄漏吗?
我的意思是,例如如果一个类A 包含一个ADelegate 并且后者指向BMethod(属于B 类)这是否可以防止GC 收集A 类或B 类?
如果是这样,我们如何“释放”代表(设置 ADeletate = Nothing / null?)
你怎么评价这个:
//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
【问题讨论】:
标签: .net memory-leaks delegates