Должны ли реализации 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()
, не заботясь о том, был ли он вызван ранее.