在应用程序中打开许多不同类的最佳方法是什么?

时间:2010-11-13 05:20:52

标签: c# winforms

这是一个场景:

在应用程序打开时,要求用户打开“项目”

项目内部有流程,类别,任务,文档和注释。

还有一些,但让我们保持简单。上面的大多数项目都是绑定到网格或树视图的列表。

每个数据库都有一个单独的数据库表,并与数据库中的值链接。

因此,在用户打开项目后,我可以执行以下操作:

  1. 获取属于项目'A'的进程
  2. 获取属于每个流程的类别
  3. 获取属于每个类别的任务
  4. 获取属于项目'A'
  5. 的文档
  6. 获取属于项目'A'的备注 等等。
  7. 问题是,如果用户关闭此项目,我必须清除每个绑定控件并清除相关的任何变量,然后准备打开另一个项目。

    所以我正在寻找的是有效处理这种情况的方法。

    我使用的是C#.Net,该应用程序是Windows Forms应用程序。

1 个答案:

答案 0 :(得分:2)

好吧,无论你怎样切片,在加载时完成的内存分配都必须在某个时候进行清理。

根据您的数据访问方式,您可能需要手动执行,或者.NET的垃圾收集器可能会为您处理(最有可能)。

对于这种类型的应用程序(考虑到您编写的有限要求),我通常会将其实现为MDI应用程序,因此您可以同时打开多个项目。所有项目加载/处理代码都将通过子窗口运行,因此只要子窗口关闭,内存就会自动清理。

即使您不/不能进行MDI,我强烈建议您遵循dispose-on-unload模型,而不是保持相同的表单打开并使用新数据重新初始化它。由于数据和/或状态的延迟(这是程序员错误,但在尝试重现客户端问题时很难或甚至无法跟踪),后一种模式非常容易出现错误行为。我在WinForms中看到了很多这种模式,当表单控件和业务逻辑开始变得复杂时,它并不漂亮。转储表格然后重新开始。