C# 在WPF应用程序中重复打开多个表单-隐藏表单还是关闭表单,哪个更好?

C# 在WPF应用程序中重复打开多个表单-隐藏表单还是关闭表单,哪个更好?,c#,.net,wpf,forms,memory,C#,.net,Wpf,Forms,Memory,我有一个主窗口A,你可以从中打开非模态的表单X,Y和Z。如果你打开表单X并再次尝试打开它,它只会被带到前面。一旦你关闭了表格X,你应该能够再次打开它。 (与您在MS Word中使用“查找”窗口的方式完全相同) 内存和资源占用最少的是什么?关闭Form X并在每次按下时创建它的新实例,还是隐藏Form X并在用户试图打开它时使其可见 将有许多表单用于编辑设置、添加客户端等。并非所有表单都将在一个会话中打开,有些表单只使用一次,有些表单将在正在打开的程序的一个会话中多次使用 谢谢。显示和隐藏表单更快

我有一个主窗口A,你可以从中打开非模态的表单X,Y和Z。如果你打开表单X并再次尝试打开它,它只会被带到前面。一旦你关闭了表格X,你应该能够再次打开它。 (与您在MS Word中使用“查找”窗口的方式完全相同)

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

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


谢谢。

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

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


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

您的问题对于本网站来说是离题的,因为它主要是基于观点的,但简而言之,隐藏/显示比关闭/重新打开快得多。唯一的缺点是窗口资源在隐藏窗口时被保留,但根据窗口的不同,这实际上应该可以忽略不计。