【问题标题】:What is the preferred method of programmatically closing a C# WPF Application?以编程方式关闭 C# WPF 应用程序的首选方法是什么?
【发布时间】:2011-06-07 13:14:07
【问题描述】:

关闭 C# WPF 应用程序的首选方法是什么?

1) 在主窗口中调用 Window.Close()

2) 在主窗口中调用 Application.Current.Shutdown(0)。

这两者在语义上是等价的还是我需要注意的细微区别?

【问题讨论】:

    标签: c# wpf close-application


    【解决方案1】:

    第一个仅关闭窗口,具体取决于您的Application.ShutdownMode 甚至可能不会关闭应用程序。

    你如何退出应用程序完全取决于你想做什么,我倾向于定义Application.MainWindow并将ShutdownMode设置为OnMainWindowClose所以所有的小对话都不会阻止应用程序关闭(因为默认是OnLastWindowClose)。

    【讨论】:

      【解决方案2】:

      绝对是Window.Close(); 这将使所有其他窗口正确关闭并最终确定其可支配资源。请注意,您应该在主窗口中调用它来关闭整个应用程序(即主窗口中的this.Close();)。

      【讨论】:

      • Close 并非在所有情况下都有效。可能有后台线程或其他顶级窗口打开,这会阻止应用程序关闭。
      • 当 Window.Close();从主窗口调用时,所有子窗口都会发出关闭信号(实际上调用了它们的 Close() 函数)。我还假设线程像往常一样在 OnClosing() 事件上正确终止。
      • 你做了很多假设,并不是应用程序中的所有窗口都必须属于一个主窗口。
      【解决方案3】:

      Application.Shutdown 关闭所有打开的窗口并处理它们,您也可以返回另一个退出代码。所以我(通常)会选择Application.Shutdown。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-08-09
        • 1970-01-01
        • 1970-01-01
        • 2011-06-29
        • 1970-01-01
        相关资源
        最近更新 更多