【发布时间】:2010-12-14 02:13:42
【问题描述】:
我认为如果您的程序没有调用 Dispose,GC 最终会调用 Dispose,但您应该在程序中调用 Dispose() 只是为了使清理具有确定性。
但是,从我的小测试程序中,我根本没有看到 Dispose 被调用....
public class Test : IDisposable
{
static void Main(string[] args)
{
Test s = new Test();
s = null;
GC.Collect();
Console.ReadLine();
}
public Test()
{
Console.WriteLine("Constructor");
}
public void Dispose()
{
Console.WriteLine("Dispose");
}
}
// 输出只是“构造函数”,我没有得到预期的“处理”。怎么了?
编辑: 是的,我知道我应该调用 Dispose() - 我在使用一次性物品时确实遵循标准模式。出现我的问题是因为我正在尝试追踪其他人代码中的泄漏,该代码是托管 C++(另一层复杂性,这将是另一个线程的好主题)。
【问题讨论】:
标签: c# .net memory dispose garbage-collection