Windows窗体已关闭但未销毁

时间:2011-01-18 06:14:57

标签: windows forms destructor

在我关闭表单(从基本表单派生)的Windows窗体应用程序中,其FormClosing和FormClosed事件触发但析构函数永远不会触发。它仍然会占用内存。

关于如何在关闭时彻底销毁表单的任何想法?

2 个答案:

答案 0 :(得分:0)

析构函数(或者更确切地说,终结函数 - 在.NET中没有析构函数)不能保证在.NET中执行 - 对象可以在运行时突发奇想时清除甚至从不 。你不能依赖你的终结者方法。

如果您需要在表单关闭时执行某些操作,请处理已关闭的事件。

如果需要释放非托管资源(例如,关闭打开的文件),请将此逻辑添加到Dispose()方法。

如果您担心内存使用,请不要担心内存使用。运行时根据自己的逻辑自动管理内存。

参考:Garbage Collection (MSDN)

答案 1 :(得分:0)

如果它没有被破坏,那意味着垃圾收集器认为它不应该被销毁。

这基本上意味着你要么:

  1. 在某处保留对象的引用
  2. 让对象听一个事件(这也是对象的一种引用)
  3. 垃圾收集器在没有引用之前不会释放该表单。

    如果您要处理重要资源,请将其设为IDisposable,然后使用Dispose方法。