6

何度も電話することのデメリットはありますGC.SuppressFinalize(object)か?Disposeパターン
の 保護されたDispose(bool)メソッドは、以前に呼び出されたかどうかをチェックしますが、パブリックメソッドにはそのようなチェックはありません。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

4

1 に答える 1

7

ドキュメントによると: http://msdn.microsoft.com/en-us/library/system.gc.suppressfinalize.aspx、オブジェクト ヘッダーにいくつかのビットを設定するため、複数回呼び出すことによる影響はありません。

于 2012-09-15T10:37:23.667 に答える