2010-07-08 19 views
13

Wie gebe ich einen Nicht-Null-Exit-Code aus einer Windows Forms-Anwendung zurück.Exit-Code aus der Windows Forms-App

Application.Exit() ist der bevorzugte Weg, um die Anwendung zu beenden, aber es gibt kein Exit-Code-Argument.

ich über Environment.Exit wissen(), aber das ist keine gute Möglichkeit, die Anwendung Schleife zu schließen ....

Antwort

27

Application.Exit zwingen, nur um den Anruf zu Application.Run (Das ist in der Regel in program.cs) zu beenden. so könnten Sie haben:

Application.Run(new MyForm()); 
Environment.Exit(0); 

und immer noch in Ihrer Anwendung aufrufen Application.Exit es zu schließen.

Kleine Probe

class Program 
{ 
    static int exitCode = 0; 

    public static void ExitApplication(int exitCode) 
    { 
     Program.exitCode = exitCode; 
     Application.Exit(); 
    } 

    public int Main() 
    { 
     Application.Run(new MainForm()); 
     return exitCode; 
    } 
} 

class MainForm : Form 
{ 
    public MainForm() 
    { 
     Program.ExitApplication(42); 
    } 
} 
+0

Großartiges Beispiel, sehr nah an dem, was ich brauche. – Fedearne

+0

Stellen Sie sicher, dass Ihre Exitcodes positive Ganzzahlen sind, andernfalls gibt% ERRORLEVEL% an der Eingabeaufforderung 0 für negative Codes zurück. In der Beispieldatei sollte exitCode also uint sein und ExitApplication sollte ebenfalls verwendet werden. –

+0

Danke, genau was ich brauchte. – VivekDev

13

Wenn Ihr main Methode einen Wert zurückgibt Sie den Exit-Code dorthin zurückkehren können. Andernfalls können Sie Environment.ExitCode verwenden, um es zu setzen.

+2

+1 Große schnelle Möglichkeit, dies zu erreichen. Ich habe jedoch eine sehr große App, mit einigen möglichen Exit-Codes und vielen verschiedenen Möglichkeiten, um zu beenden. Ich werde mit dem Beispiel von VirtualBlackFox in meiner aktuellen Anwendung gehen. – Fedearne

+0

Dies sollte die akzeptierte Antwort gewesen sein. – Loudenvier

0

Wechseln Sie in Ihrem Formular zur Registerkarte "Ereignis" und klicken Sie doppelt auf den Eintrag und dann in den Code-Speicherort schreiben Environment.Exit (0);

Verwandte Themen