这是一个场景:
在应用程序打开时,要求用户打开“项目”
项目内部有流程,类别,任务,文档和注释。
还有一些,但让我们保持简单。上面的大多数项目都是绑定到网格或树视图的列表。
每个数据库都有一个单独的数据库表,并与数据库中的值链接。
因此,在用户打开项目后,我可以执行以下操作:
问题是,如果用户关闭此项目,我必须清除每个绑定控件并清除相关的任何变量,然后准备打开另一个项目。
所以我正在寻找的是有效处理这种情况的方法。
我使用的是C#.Net,该应用程序是Windows Forms应用程序。
答案 0 :(得分:2)
好吧,无论你怎样切片,在加载时完成的内存分配都必须在某个时候进行清理。
根据您的数据访问方式,您可能需要手动执行,或者.NET的垃圾收集器可能会为您处理(最有可能)。
对于这种类型的应用程序(考虑到您编写的有限要求),我通常会将其实现为MDI应用程序,因此您可以同时打开多个项目。所有项目加载/处理代码都将通过子窗口运行,因此只要子窗口关闭,内存就会自动清理。
即使您不/不能进行MDI,我强烈建议您遵循dispose-on-unload模型,而不是保持相同的表单打开并使用新数据重新初始化它。由于数据和/或状态的延迟(这是程序员错误,但在尝试重现客户端问题时很难或甚至无法跟踪),后一种模式非常容易出现错误行为。我在WinForms中看到了很多这种模式,当表单控件和业务逻辑开始变得复杂时,它并不漂亮。转储表格然后重新开始。