委託會導致內存泄漏嗎?委託會導致內存泄漏嗎?
我的意思是,例如,如果一個類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