【发布时间】:2018-10-25 23:03:15
【问题描述】:
我正在制作一个有登录窗口和主窗口的程序。我想知道隐藏窗口是否比关闭它们对性能的影响更大。
我已经写下了这两个选项,如果有更好的方法,请告诉我。
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 创建的非托管资源 被丢弃。
Window.Closing Event: 如果要显示和隐藏一个窗口多个 应用程序生命周期中的时间,而您不想 每次显示它时重新实例化窗口,您可以处理 关闭事件,取消它,然后调用 Hide 方法。然后,您可以调用 在同一实例上显示以重新打开它。
更多细节
- 我正在关闭并创建一个新的 Datamatrix 窗口,尽管可以使用相同的参数来显示或隐藏它,就像登录屏幕一样
- 我不希望用户经常登录和注销,因此这些切换不应该经常发生(因此我倾向于关闭登录窗口而不是隐藏它)
【问题讨论】:
-
我的意见:关闭它。
-
MSDN makes no note of a potential performance hit if windows are not closed.性能影响是窗口仍然存在(即不会关闭),只是隐藏。这对您来说是否是一个问题取决于窗口包含的内容、计算机的内存限制、窗口加载和显示需要多长时间等。 -
您不会注意到单个窗口的性能或操作系统资源影响。但与所有事情一样,如果你做得太多,这可能会严重失控。 This question 那样引人注目。