Should implementations of IDisposable
make Dispose()
safe to call multiple times? Or the opposite? What approach to most .NET Framework classes take?
Specifically, is it safe to call System.Data.Linq.DataContext.Dispose()
multiple times?
The reason I ask is because I am wondering if this extra protection is necessary:
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);
}
when disposing IDisposable
members of a class, or whether I should just call this.obj.Dispose()
without concern for whether it has been previously called.
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…