c# - 多次调用 SuppressFinalize

标签 c# garbage-collection suppressfinalize

多次调用 GC.SuppressFinalize(object) 有什么缺点吗?
protected Dispose(bool) 方法 dispose pattern 检查它之前是否被调用,但在公共(public) 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); }

可以多次调用MyClass实例的Dispose()方法吗?

最佳答案

根据文档:http://msdn.microsoft.com/en-us/library/system.gc.suppressfinalize.aspx ,它在对象 header 中设置了一些位,因此多次调用它不应该有任何影响。

关于c# - 多次调用 SuppressFinalize,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12436555/

相关文章:

c# - 在静态泛型方法中获取当前类型?

c# - Visual Studio 如何在本地运行 Web 服务?

java - 垃圾收集中的链式 react

c# - 拥有终结器的开销 - 在 Dispose 中有/没有 SuppressFinalize

c# - 使用 AWS CDK 创建用于构建 Docker 镜像的 CodeBuild 项目

c# - 我如何使用 Firebug 找出页面上使用了多少个 CSS 文件?

android - android 中的 logcat 显示只是关闭 VM?

Java老年代一直在增长,直到Tomcat重启

C#语言 : Garbage Collection, SuppressFinalize