【问题标题】:Where is System.GC.RunFinalizers() Located? [closed]System.GC.RunFinalizers() 位于哪里? [关闭]
【发布时间】:2012-09-24 10:01:11
【问题描述】:

我看到其他人引用了该方法,但如果我包含了

System.GC.RunFinalizers()

我收到错误'System.GC' does not contain a definition for 'RunFinalizers'

System.GC.Collect(); 运行良好。如何运行 RunFinalizers 方法?好像不是 GC 类的成员:http://msdn.microsoft.com/en-us/library/system.gc.aspx

编辑: 可以在此处找到对该方法的参考:

If you stick to standard coding in .NET, is there reason to manually invoke the GC or run finalizers?

【问题讨论】:

  • 我很想知道你为什么认为你需要这种方法。
  • 你在哪里看到过这段代码?对我来说听起来很假。有 GC.WaitForPendingFinalizers...
  • 没有这种方法...你在哪里找到它的参考?
  • @spender 为什么?因为我不想叫它。
  • @ProgrammerAtWork... 显然...但我想知道您为什么要调用它。真正的问题是什么?

标签: c# garbage-collection


【解决方案1】:

.Net BCL 中从未提供此方法。

但似乎这种方法在 .net 1.0 beta 2 之前确实可用,然后从后续版本中删除。很难获得有关 .net 1.0 beta 版本的任何信息,但可以通过查看以下代码得出一个推论(尽管并非万无一失):

来源:CodeForge

protected void Form1_Closing(object sender, System.ComponentModel.CancelEventArgs e)
    {
        ci=null;
        System.GC.RunFinalizers();
        Application.ExitThread();
        Application.Exit();

    }

以上代码的作者正在使用这个功能。

Exes 包含在下载中(这意味着作者能够成功构建应用程序)。现在源文件和 exe 的创建日期是 2001 年 2 月,当时只有 .Net Framework 1.0 beta 2 可用。因此,上述代码的作者很可能是针对 .Net 1.0 beta2 构建的。

【讨论】:

    【解决方案2】:

    没有命名的公共方法:

    System.GC.RunFinalizers()
    

    您读到的任何引用很可能是对以下内容的混淆引用:

    System.GC.WaitForPendingFinalizers()
    

    【讨论】:

      猜你喜欢
      • 2013-07-21
      • 2013-09-08
      • 2021-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多