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

前端之家收集整理的这篇文章主要介绍了c# – 退出WPF应用程序的最佳做法是什么?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在维护一个现有的C#应用​​程序,我注意到以下代码没有按预期工作.
  1. private void Form1_Load(object sender,EventArgs e){
  2. ...
  3. if (proc.Length == 0)
  4. {
  5. proc = Process.GetProcessesByName("OpCon");
  6. if (proc.Length == 0)
  7. {
  8. WriteLog("DataloggerService start: no TSS process detected; close;");
  9. this.Close();
  10. }
  11. }
  12. ...
  13. }

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

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

  1. private void Form1_Load(object sender,EventArgs e){
  2. ....
  3. if (proc.Length == 0)
  4. {
  5. proc = Process.GetProcessesByName("OpCon");
  6. if (proc.Length == 0)
  7. {
  8. WriteLog("DataloggerService start: no TSS process detected; close;");
  9. this.Dispose();
  10. Environment.Exit(0);
  11. }
  12. }
  13. ....
  14. }

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

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

谢谢.

问候,
SQR

解决方法

在您的WPF应用程序中,只要在App.xaml中指定为StartupURI的MainWindow关闭,您的应用程序就会自动退出.

如果你想在你的终端处理这个应用程序退出,你仍然可以寻求以下解决方案.

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

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

猜你在找的C#相关文章