委托会导致内存泄漏吗?委托会导致内存泄漏吗?
我的意思是,例如,如果一个类A
包含ADelegate
而后者指向BMethod
(的B
类)是否可以阻止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
如果我有一个具有多个委托订阅/取消订阅的大型复杂对象,最后在处理此对象时,我想让这个委托的所有链接“让我们死掉”。 – serhio 2010-02-09 08:53:39
然后你可以实现IDisposable。 – 2010-02-09 09:02:14
是的,我应该在该代理的Dispose方法中编写什么内容。 ,也许'System.Delegate.RemoveAll(myDelegate,myDelegate)'会有帮助吗? – serhio 2010-02-09 09:04:30