Quelle est la commande en C# pour quitter une application en console ?
Juste par curiosité, qu'est-ce qui le rend plus propre ?
Quelle est la commande en C# pour quitter une application en console ?
Vous pouvez utiliser Environment.Exit(0);
y Application.Exit
Environment.Exit(0)
est plus propre .
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 .
@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.
Plusieurs options, par ordre de la manière la plus appropriée :
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.
Cette dernière option est de mauvais goût. Aucun programmeur ne veut quitter un programme en lançant une exception.
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.
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.
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);
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.
2 votes
Cela répond-il à votre question ? Comment spécifier le code de sortie d'une application console en .NET ?