我在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
答案 0 :(得分:0)
覆盖Form.Dispose
方法是最适合清理的地方。它可能已在设计器中被覆盖,在这种情况下,您需要将其移动到您的代码文件中。
以下是关于覆盖Fom.Dispose
应该有所帮助的另一篇文章。 How do I extend a WinForm's Dispose method?