Antworten:
Sie können Environment.Exit(0);
und verwendenApplication.Exit
Environment.Exit(0)
ist sauberer .
Environment.Exit
Erfordert jedoch, dass Sie über die Berechtigungen SecurityPermissionFlag.UnmanagedCode verfügen - was für einige möglicherweise problematisch ist.
Verschiedene Optionen in der Reihenfolge der am besten geeigneten Methode:
System.Environment.Exit
( nicht tragbar! Siehe unten )Bearbeitet 9/2013, um die Lesbarkeit zu verbessern
Rückgabe mit einem bestimmten Exit-Code: Wie Servy in den Kommentaren ausführt, können Sie Main mit einem int
Rückgabetyp deklarieren und auf diese Weise einen Fehlercode zurückgeben. Es ist also wirklich nicht erforderlich, Environment.Exit zu verwenden, es sei denn, Sie müssen mit einem Exit-Code beenden und können dies möglicherweise nicht in der Main-Methode tun. Höchstwahrscheinlich können Sie dies vermeiden, indem Sie eine Ausnahme auslösen und einen Fehlercode in Main zurückgeben, wenn sich dort eine nicht behandelte Ausnahme ausbreitet. Wenn die Anwendung über mehrere Threads verfügt, benötigen Sie wahrscheinlich noch mehr Boilerplate, um ordnungsgemäß mit einem Exit-Code zu beenden, sodass Sie möglicherweise besser einfach Environment.Exit aufrufen können.
Ein weiterer Punkt gegen die Verwendung Evironment.Exit
- selbst beim Schreiben von Multithread-Anwendungen - ist die Wiederverwendbarkeit . Wenn Sie Ihren Code jemals in einer Umgebung wiederverwenden möchten, die Environment.Exit
irrelevant ist (z. B. in einer Bibliothek, die möglicherweise auf einem Webserver verwendet wird), ist der Code nicht portierbar. Die beste Lösung ist meiner Meinung nach immer, immer Ausnahmen und / oder Rückgabewerte zu verwenden, die darstellen, dass die Methode einen Fehler- / Endzustand erreicht hat. Auf diese Weise können Sie in jeder .NET-Umgebung und in jeder Art von Anwendung immer denselben Code verwenden. Wenn Sie speziell eine App schreiben, die einen Exit-Code zurückgeben oder auf ähnliche Weise beenden Environment.Exit
muss, können Sie den Thread auf höchster Ebene umbrechen und die Fehler / Ausnahmen nach Bedarf behandeln.
Konsolenanwendungen werden beendet, wenn die Hauptfunktion ausgeführt wurde. Eine "Rückkehr" wird dies erreichen.
static void Main(string[] args)
{
while (true)
{
Console.WriteLine("I'm running!");
return; //This will exit the console application's running thread
}
}
Wenn Sie einen Fehlercode zurückgeben, können Sie dies auf folgende Weise tun, auf die über Funktionen außerhalb des ursprünglichen Threads zugegriffen werden kann:
System.Environment.Exit(-1);
Sie können Environment.Exit(0)
und verwenden Application.Exit
.
Environment.Exit()
: Beendet diesen Prozess und gibt dem zugrunde liegenden Betriebssystem den angegebenen Exit-Code.