加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-15 18:06:32 所属栏目:百科 来源:网络整理
导读:我正在维护一个现有的C#应用??程序,我注意到以下代码没有按预期工作. private void Form1_Load(object sender,EventArgs e){ ... if (proc.Length == 0) { proc = Process.GetProcessesByName("OpCon"); if (proc.Length == 0) { WriteLog("DataloggerServic
我正在维护一个现有的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

解决方法

在您的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);
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读