【问题标题】:Which is better for repeatedly opening multiple forms in WPF app - hiding them or closing them? [closed]哪个更适合在 WPF 应用程序中重复打开多个表单 - 隐藏它们或关闭它们? [关闭]
【发布时间】:2014-09-29 09:52:20
【问题描述】:

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

什么会占用最少的内存和资源 - 关闭 Form X 并在每次按下它时创建一个新实例,或者隐藏 Form X 并在用户尝试打开它时使其可见?

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

谢谢。

【问题讨论】:

  • 您的问题与本网站无关,因为它主要基于意见,但总之隐藏/显示比关闭/重新打开要快得多。唯一的缺点是窗口资源在窗口隐藏时被保留,但根据窗口,这确实应该可以忽略不计。

标签: c# .net wpf forms memory


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-11-21
    • 1970-01-01
    • 1970-01-01
    • 2015-09-02
    • 1970-01-01
    • 2013-06-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多