0

我在 WindowsForms 解决方案中有一个存在内存泄漏问题的表单。表单通过 MainForm 上的按钮打开。多次打开后,未处理的异常会终止应用程序。

该表单在 MainForm 中有一个私有实例,并按照某些逻辑规则关闭或重新创建。

该子窗体包含来自 MainForm 的一些委托。我想代表可能会导致内存泄漏。可能当表单关闭或重新创建时,古老的实例可以保存在与代表链接的内存中。

如何以及在何处“销毁”表单中的代表?

Protected Overrides Sub Finalize() ' here?

Protected Overrides Sub OnHandleDestroyed(e As System.EventArgs) ' or here
  Me._MyDelegate1 = Nothing
  Me.DlgDelegate1 = Nothing
  Me.DlgDelegate2 = Nothing
4

1 回答 1

0

覆盖该Form.Dispose方法是最适合进行此类清理的地方。它可能已经在设计器中被覆盖,在这种情况下,您需要将其移动到您的代码文件中。

这是关于覆盖的另一篇文章Fom.Dispose,应该会有所帮助。如何扩展 WinForm 的 Dispose 方法?

于 2013-01-31T01:03:08.630 回答