隐藏而不是关闭窗口时的性能影响

时间:2018-10-25 11:25:18

标签: c# .net wpf

我正在制作一个具有登录窗口和主窗口的程序。我想知道隐藏窗口是否比关闭窗口对性能有更大的影响。

我已经写下了这两个选项,请告知是否有更好的方法。

private void Login()
{
    DataMatrixWindow dmWindow = new DataMatrixWindow(); // Creates new Datamatrix window
    dmWindow.Show();
    Close(); // Closes login window
}

或者使“登录”窗口一直处于活动状态,并在需要时显示/隐藏它。

private void Login()
{
    DataMatrixWindow dmWindow = new DataMatrixWindow(); // Creates new Datamatrix window
    dmWindow.Show();
    Visibility = Visibility.Collapsed; // Hides login window
}

MSDN不会指出如果未关闭窗口,可能会导致性能下降。

  

Window.Close Method:窗口创建的非托管资源   被处置。

     

Window.Closing Event:如果要显示和隐藏多个窗口   时间在应用程序的生命周期中,而您不想   每次显示窗口时都要重新实例化,您可以处理   关闭事件,将其取消,然后调用Hide方法。然后,您可以致电   在同一实例上显示以重新打开它。

更多详细信息

  • 我正在关闭并创建一个新的Datamatrix窗口,尽管是否可以像登录屏幕一样显示或隐藏它也可以使用相同的参数
  • 我不希望用户不断登录和注销,因此这些切换不应经常发生(因此,我倾向于关闭登录窗口而不是隐藏登录窗口)

2 个答案:

答案 0 :(得分:2)

当您使用Visibility.Collapsed时,它不会从可视树中删除您的窗口,因此在不可见的情况下会对性能产生影响。 要自己了解这种性能影响,您可以做两件事:

  1. 打开Snoop,您将能够在视觉树上看到整个窗口。
  2. 创建一个测试器,并通过代码(例如)通过按钮填充它-放置1万个并通过Visibility.Collapsed进行设置。然后检查那里与干净应用程序相关的性能。查看启动exe时需要多长时间显示。

希望这会有所帮助。

答案 1 :(得分:1)

  

我想知道隐藏窗口是否比关闭窗口对性能有更大的影响。

可能是。关闭并显示一个简单的窗口(例如登录表单)不会明显影响性能,因此,我建议您在登录后关闭该窗口,并在需要和再次登录时显示该窗口的另一个实例。当然,这比登录后在后台打开窗口更好。至少在我看来。