表格中的代表如何销毁

时间:2013-01-28 09:23:45

标签: .net vb.net winforms memory-leaks delegates

我在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

1 个答案:

答案 0 :(得分:0)

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

以下是关于覆盖Fom.Dispose应该有所帮助的另一篇文章。 How do I extend a WinForm's Dispose method?