哪个更适合在WPF应用程序中重复打开多个表单 - 隐藏它们或关闭它们?

时间:2014-08-06 12:44:30

标签: c# .net wpf forms memory

我有主窗口A,你可以从中打开非模态形式X,Y和Z.如果你打开表单X并尝试再次打开它,它将被简单地带到前面。关闭表单X后,您应该可以再次打开它。 (正如您在MS Word中使用“查找”窗口的方式)

什么是最少的内存和资源密集型 - 关闭表单X并在每次按下时创建它的新实例,或隐藏表单X并在用户尝试打开它时使其可见?

会有很多形式用于编辑设置,添加客户端等等。并非所有表单都会在会话中打开,有些只会使用一次,有些会在程序打开的一个会话中多次使用

谢谢。

1 个答案:

答案 0 :(得分:2)

显示和隐藏表单更快,因为您不需要每次都重新创建控件。 WPF中的虚拟化几乎就是这样 - 通过在控制树中添加和删除控件来重用控件,更改数据上下文。

然而,虽然显示和隐藏速度更快,但资源管理更难:表单可能会保留对模型的引用,因此如果它们很重,您将需要更多地使用内存管理。控件不太可能占用大量内存(您可以使用虚拟化和其他技术来解决这个问题),因此它不是问题的根源。

如有疑问,请测量。重新创建表单更容易,默认情况下这样做。如果它很慢(例如,如果有数百个控件),请尝试优化和测量性能增益。在慢速设备上,这种优化可以产生很大的不同。