ser*_*hio 4 .net delegates memory-leaks
代表会导致内存泄漏吗?
我的意思是,例如,如果一个类A包含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
Run Code Online (Sandbox Code Playgroud)
是的,除非您取消订阅活动,否则参考文件将保持活动状态:
someObject.SomeEvent -= SomeDelegate;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4961 次 |
| 最近记录: |