2008-10-28 5 views
7

Je cherche à forcer mon application à se fermer et à retourner un code de sortie. J'ai regardé sur MSDN et je peux voir que dans WPF l'application a une méthode Shutdown qui prend un code d'erreur en paramètre, mais il ne semble pas en avoir un pour System.Windows.Forms.Application.Forcer l'application à s'arrêter (.net)

Je peux voir Application.Exit() mais pas un moyen de renvoyer un code d'erreur.

Est-ce que quelqu'un sait en main libre si c'est possible?

Merci

Répondre

13

Vous pouvez utiliser System.Environment.Exit (yourExitCode).

+0

Une raison d'utiliser Environment.Exit sur Application.Exit en plus du code d'erreur S? – Sekhat

+1

Application.Exit doit être utilisé dans les applications Winforms, environnement.exit() peut être utilisé dans des programmes non-GUI. –

2

Définissez la propriété ExitCode dans la classe System.Environment et à la sortie. par exemple.

System.Environment.ExitCode = 1 
Application.Exit() 
2

Ajouter une propriété ExitCode (ou quelque chose de similaire) à votre classe de formulaire:

class MyForm : Form { 
    public int ExitCode { get; set; } 

    void ShutDownWithError(int code) { 
    ExitCode = code; 
    Close(); 
    } 
} 

Quelque part dans votre code que vous avez:

static void Main() { 
    // ... 
    MyForm form = new MyForm(); 
    Application.Run(myForm); 
} 

changement qui en:

static void Main() { 
    // ... 
    MyForm myForm = new MyForm(); 
    Application.Run(myForm); 
    Environment.Exit(myForm.ExitCode); 
} 

Lorsque le ShutdownWithE La méthode rror est appelée sur votre formulaire, vous fermez le formulaire principal. Cela va sauter hors de la boucle commencée avec Application.Run. Ensuite, vous venez de récupérer le code de sortie et de tuer le processus avec Environment.Exit.

+0

Merci, je pense que notre cas est un peu plus compliqué parce que nous avons besoin de fermer dans le gestionnaire d'exception globale. Mais le principe est le même, je pense. – Duncan

Questions connexes