【问题标题】:how to quit a C# application in case of errors [duplicate]如果出现错误,如何退出 C# 应用程序 [重复]
【发布时间】:2016-11-12 11:53:03
【问题描述】:

在我的应用程序(Windows 7 Prof,Xamarin Studio V 5.10.1 build 6)中,我尝试打开一个串行端口。如果此端口不可用,我会尝试向用户发送一条对话框消息,然后使用以下代码退出程序,但遗憾的是这不会终止应用程序:

enter code here

using System;
using Gtk;
using Pango;                    // benötigt für Font-Operationen
using System.Diagnostics;       // benötigt für "Process.Start (...)"
using System.IO.Ports;          // benötigt für serielle Schnittstelle
using System.IO;                // benötigt für IOException

public partial class MainWindow : Gtk.Window
{
   // Globale Variable der Klasse
   // ---------------------------
   bool valret = true, wahl = true;
   SerialPort sPort;
   ....

    // Initialisierung der seriellen Schnittstelle
    // -------------------------------------------
    try { sPort.Open(); } 
    catch {
            MessageDialog md = new MessageDialog (null, 
            DialogFlags.DestroyWithParent,
            MessageType.Error, 
            ButtonsType.Close, "Serial IF nicht vorhanden");

        int result = md.Run ();
        Application.Quit ();
        md.Destroy ();
    }

主窗口既没有关闭,*.exe 程序也没有终止。相反,由于以下对 sPort 功能的错误访问不可用,程序继续运行并出现错误。

建议使用哪种代码来完成这项工作?非常感谢任何 cmets!

【问题讨论】:

  • Application.Quit() 是相当弱的酱汁,它可以被窗口忽略。或者在尚未调用 Application.Run() 时什么也不做,很可能是在主窗口的构造函数中。 Environment.Exit() 更有说服力。
  • 你为什么不首先尝试弄清楚如何在没有任何错误的情况下终止应用程序,只需将其终止,这很容易搜索。你的问题很多是无关紧要的,你可以让你的示例代码更小。 sPort 等是无关紧要的。当您发布问题时,它也应该对其他人有用,所以重点是主题。而且您始终可以捕获异常并将退出语句放在那里。但是你甚至没有研究过什么 exit 语句会起作用(除了错误处理)
  • 看起来像重复,其中问题和答案与已发布的内容相比没有优势。

标签: c#


【解决方案1】:

尝试使用Application.Exit()Environment.Exit() 而不是Application.Quit()

我希望这会有所帮助,祝你好运。

【讨论】:

  • 这不是stackoverflow.com/questions/12977924/…的答案@应用程序出口是针对winforms而环境出口是针对一般情况(除了winforms)。
  • 是的,我想这是一个重复的问题
  • 用建议的 System.Environment.Exit(1) 替换 Application.Quit() 实际上完成了这项工作并终止了主窗口和 *.exe 任务。另一方面,Xamarin Studio 5.10 的编译器不接受 Application.Exit()。感谢您的宝贵帮助!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-02-22
  • 2010-11-17
  • 2021-03-26
  • 2017-04-14
  • 1970-01-01
  • 2013-06-18
相关资源
最近更新 更多