退出WPF应用程序的最佳做法是什么?

时间:2014-10-16 02:25:09

标签: c# wpf exit

我正在维护一个现有的C#应用​​程序,我注意到以下代码没有按预期工作。

        private void Form1_Load(object sender, EventArgs e){
             ...
            if (proc.Length == 0)
            {                    
                proc = Process.GetProcessesByName("OpCon");
                if (proc.Length == 0)
                {
                    WriteLog("DataloggerService start: no TSS process detected; close;");
                    this.Close();
                }
            }
          ...
         }

代码应该在Close()api调用后退出。但是,它仍在继续。

经过一些阅读和研究,我将其修改为

       private void Form1_Load(object sender, EventArgs e){
            ....
            if (proc.Length == 0)
            {                    
                proc = Process.GetProcessesByName("OpCon");
                if (proc.Length == 0)
                {
                    WriteLog("DataloggerService start: no TSS process detected; close;");
                    this.Dispose();
                    Environment.Exit(0);
                }
            }
            ....
        }

似乎按预期退出。但是,我不相信这是否是最佳做法?

是否真的有必要在Environment.Exit()之前调用this.Close()或this.Dispose()?

感谢。

的问候, SQR

1 个答案:

答案 0 :(得分:16)

在您的WPF应用程序中,无论何时关闭在App.xaml中指定为StartupURI的MainWindow,您的应用程序都会自动退出。

如果你想在你的终端处理这个应用程序的退出,你可以选择以下解决方案。

覆盖MainWindow的onClosing并手动退出/关闭应用程序。

protected override void OnClosing(System.ComponentModel.CancelEventArgs e)
{
    // Shutdown the application.
    Application.Current.Shutdown();
    // OR You can Also go for below logic
    // Environment.Exit(0);
}