2010-07-08 9 views
13

Comment renvoyer un code de sortie non nul à partir d'une application Windows Forms. Application.Exit() est le moyen préféré de quitter l'application, mais il n'y a pas d'argument de code de sortie.Code de sortie de l'application Windows Forms

Je sais Environment.Exit(), mais ce n'est pas une belle façon de fermer la boucle d'application ....

Répondre

27

Application.Exit juste force l'appel à Application.Run (qui est généralement en program.cs) à la fin. de sorte que vous pourriez avoir:

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

et encore à l'intérieur de votre appel d'application Application.Exit pour le fermer.

petit échantillon

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

Bon exemple, très proche de ce dont j'ai besoin. – Fedearne

+0

assurez-vous que vos exitcode sont des entiers positifs, sinon% ERRORLEVEL% sur l'invite de commande vous renverra 0 pour les codes négatifs. Ainsi, dans l'exemple, exitCode devrait être uint et ExitApplication devrait aussi prendre uint. –

+0

Merci, exactement ce dont j'avais besoin. – VivekDev

13

Si votre méthode main retourne une valeur que vous pouvez retourner le code de sortie là-bas. Sinon, vous pouvez utiliser Environment.ExitCode pour le définir.

+2

+1 Grande manière rapide d'accomplir ceci. J'ai cependant une très grande application, avec un bon nombre de codes de sortie possibles et beaucoup de façons différentes de quitter. Je vais aller avec l'exemple de VirtualBlackFox dans mon application actuelle. – Fedearne

+0

Cela aurait dû être la réponse acceptée. – Loudenvier

0

aller à l'onglet de l'événement dans votre formulaire et en cliquant sur le lieu un double-clic dessus, puis en lieu de code écrire Environment.Exit (0);