Следует ли сделать безопасным вызов IDisposable.Dispose () несколько раз?

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

41
задан Jake Petroules 15 March 2011 в 02:26
поделиться