348 votes

Quelle est la commande pour quitter une application Console en C# ?

Quelle est la commande en C# pour quitter une application en console ?

2 votes

486voto

Nikhil Agrawal Points 19567

Vous pouvez utiliser Environment.Exit(0); y Application.Exit

Environment.Exit(0) est plus propre .

13 votes

Juste par curiosité, qu'est-ce qui le rend plus propre ?

0 votes

Cela a parfaitement fonctionné pour moi lorsque j'ai ajouté un timer à une application console via stackoverflow.com/a/7865126/1530166 . Application.Exit ne l'a pas fait, même en utilisant la fonction stackoverflow.com/a/37029044/1530166 .

7 votes

@GrantH. il est plus propre car il donne au système d'exploitation sous-jacent un code d'erreur plus utile pour expliquer pourquoi il se termine.

101voto

sinelaw Points 6641

Plusieurs options, par ordre de la manière la plus appropriée :

  1. Retourner un int à partir de la méthode Program.Main
  2. Lance une exception et ne la gère nulle part (à utiliser pour les situations d'erreur inattendues).
  3. Pour forcer la résiliation ailleurs, System.Environment.Exit ( non portable ! voir ci-dessous )

Modifié le 9/2013 pour améliorer la lisibilité

Retour avec un code de sortie spécifique : Comme Servy le fait remarquer dans les commentaires, vous pouvez déclarer Main avec un fichier int et renvoyer un code d'erreur de cette manière. Il n'est donc pas nécessaire d'utiliser Environment.Exit. sauf si vous devez terminer avec un code de sortie et vous ne pouvez pas le faire dans la méthode Main. Vous pouvez probablement éviter cela en lançant une exception et en renvoyant un code d'erreur dans Main si une exception non gérée s'y propage. Si l'application est multithread, vous aurez probablement besoin d'encore plus d'éléments pour terminer correctement avec un code de sortie, il est donc préférable d'appeler Environment.Exit.

Un autre point contre l'utilisation de Evironment.Exit - même lors de l'écriture d'applications multithreads - est possibilité de réutilisation . Si vous voulez un jour réutiliser votre code dans un environnement qui rend Environment.Exit non pertinent (comme une bibliothèque qui peut être utilisée dans un serveur web), le code ne sera pas portable. La meilleure solution reste, à mon avis, de toujours utiliser des exceptions et/ou des valeurs de retour qui indiquent que la méthode a atteint un état d'erreur/de fin. De cette façon, vous pouvez toujours utiliser le même code dans n'importe quel environnement .NET et dans n'importe quel type d'application. Si vous écrivez spécifiquement une application qui a besoin de retourner un code de sortie ou de se terminer d'une manière similaire à ce qui se passe dans le cas de Environment.Exit vous pouvez alors aller de l'avant et envelopper le fil au niveau le plus élevé et gérer les erreurs/exceptions selon les besoins.

13 votes

Cette dernière option est de mauvais goût. Aucun programmeur ne veut quitter un programme en lançant une exception.

6 votes

Comme je l'ai écrit "par ordre du plus approprié". De plus, dans certaines situations, lancer une exception EST la bonne façon de procéder (par exemple, lorsqu'une erreur fatale inattendue, qui ne devrait pas se produire, se produit et que l'application ne pourra jamais s'en remettre). J'ai mis à jour la réponse pour clarifier.

0 votes

Si vous êtes dans Main, vous pouvez simplement renvoyer 0, 1, etc. et marquer la signature de la méthode comme renvoyant un int pour renvoyer un code d'erreur, vous n'avez pas besoin d'utiliser Environment.Exit pour spécifier un code d'erreur.

29voto

Developer Points 1425

Les applications de la console se terminent lorsque l'exécution de la fonction principale est terminée. Un "return" permet d'y parvenir.

    static void Main(string[] args)
    {
        while (true)
        {
            Console.WriteLine("I'm running!");
            return; //This will exit the console application's running thread
        }
    }

Si vous renvoyez un code d'erreur, vous pouvez le faire de cette manière, qui est accessible depuis des fonctions extérieures au thread initial :

    System.Environment.Exit(-1);

11voto

Mahdad Points 361

Vous pouvez utiliser Environment.Exit(0) y Application.Exit .

Environment.Exit() : met fin à ce processus et donne au système d'exploitation sous-jacent le code de sortie spécifié.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X