多次调用SuppressFinalize

时间:2012-09-15 10:24:24

标签: c# garbage-collection suppressfinalize

多次致电GC.SuppressFinalize(object)是否有任何不足之处? 配置模式的受保护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方法吗?

1 个答案:

答案 0 :(得分:6)

根据文档:http://msdn.microsoft.com/en-us/library/system.gc.suppressfinalize.aspx,它在对象标题中设置了一些位,因此不应该多次调用它。[/ p>