Должны ли реализации 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);
}
при удалении IDisposable членов класса, или я должен просто вызвать this.obj. Dispose ()
, не обращая внимания на то, вызывалась ли она ранее.