Jak*_*les 41 .net c# idisposable
IDisposable的实现是否可以安全地多次调用Dispose()?或者相反?大多数.NET Framework类采用什么方法?
具体来说,System.Data.Linq.DataContext.Dispose()
多次通话是否安全?
我问的原因是因为我想知道是否需要这种额外保护:
public override void Dispose(bool disposing)
{
// Extra protection...
if (this.obj != null)
{
this.obj.Dispose();
this.obj = null;
}
// Versus simply...
this.obj.Dispose();
base.Dispose(disposing);
}
Run Code Online (Sandbox Code Playgroud)
在处理类的IDisposable成员时,或者我是否应该在this.obj.Dispose()
不关心之前调用它的情况下调用它.
Ada*_*son 57
你应该可以安全地多次调用它,尽管如果可以的话你可能应该避免它.
从MSDN页面上IDisposable.Dispose()
:
如果多次调用对象的Dispose方法,则该对象必须忽略第一个之后的所有调用.如果多次调用Dispose方法,则该对象不得抛出异常.
是的,您的IDisposable.Dispose()实现应该容忍被多次调用.在第一次调用Dispose()之后,所有其他调用都可以立即返回.
我更喜欢你的代码示例的第一部分,在你去的时候处理和归零局部变量.
请注意,即使在代码中实现Dispose和null模式,也可能多次调用.Dispose().如果多个使用者持有对同一个一次性对象的引用,则该对象的Dispose可能会被多次调用,因为这些对象删除了对它的引用.
归档时间: |
|
查看次数: |
9727 次 |
最近记录: |