Зачем вызывать Dispose(false) в деструкторе?C#

Место общения программистов C#
Anonymous
Зачем вызывать Dispose(false) в деструкторе?

Сообщение Anonymous »

Ниже приведен типичный пример шаблона утилизации:

Код: Выделить всё

 public bool IsDisposed { get; private set; }

#region IDisposable Members

public void Dispose()
{
Dispose(true);
GC.SuppressFinalize(this);
}

protected virtual void Dispose(bool disposing)
{
if (!IsDisposed)
{
if (disposing)
{
//perform cleanup here
}

IsDisposed = true;
}
}

~MyObject()
{
Dispose(false);
}
Я понимаю, что делает Dispose, но не понимаю, почему вы хотите вызвать Dispose(false) в деструкторе? Если вы посмотрите на определение, оно абсолютно ничего не даст, так зачем же кому-то писать такой код? Разве не имело бы смысл вообще не вызывать метод Release из деструктора?

Подробнее здесь: https://stackoverflow.com/questions/628 ... destructor

Вернуться в «C#»