Вызов SuppressFinalize несколько раз

Есть ли обратная сторона звонка GC.SuppressFinalize(object) многократно?
защищенный Dispose(bool) метод шаблона dispose проверяет, был ли он вызван ранее, но такой проверки нет Dispose() метод.

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

protected virtual void Dispose(bool disposing)
{
    if (_Disposed)
        return;

    if (disposing)
    {
        // Cleanup managed resources.
    }

    // Cleanup unmanaged resources.
    _Disposed = true;
}

~MyClass() { Dispose(false); }

Это нормально называть Dispose() метод MyClass экземпляр несколько раз?

1 ответ

Решение

Согласно документации: http://msdn.microsoft.com/en-us/library/system.gc.suppressfinalize.aspx, он устанавливает некоторый бит в заголовок объекта, поэтому не должно быть никаких последствий его вызова несколько раз.

Другие вопросы по тегам