27 votes

Quand doit-on utiliser de l'Environnement.Quitter pour mettre fin à une application console?

Je suis le maintien d'un certain nombre d'applications de console au travail et la seule chose que j'ai remarqué dans un certain nombre d'entre eux est ce qu'ils appellent l'Environnement.Exit(0).

Un exemple de programme devrait ressembler à ceci:

public class Program
{
    public static void Main(string[] args)
    {
        DoStuff();
        Environment.Exit(0);
    }
}

Je ne comprends pas ce que l'intention de la première programmeur est en faisant cela? Dans mon esprit, même sans l'Environnement.Instruction Exit le programme devrait sortir très bien. Cela dit, pour l'un de ces programmes, c'est de la fenêtre de la console a été en restant, même après qu'il était censé avoir fermé donc je ne suis vraiment pas sûr de ce qui se passe là-bas....

Suis-je manqué quelque chose? Ou est-il une raison pour laquelle l'Environnement.La sortie doit être appelée dans ce cas?

39voto

Jon Skeet Points 692016

La seule raison de l'appel Exit() sur la dernière ligne de la méthode Principale est de savoir si il pourrait y avoir d'autres avant-plan les threads en cours d'exécution. Ils allaient rester en cours d'exécution si l'exécution est tombé à la fin de l' Main. Même dans ce cas, il sera habituellement une meilleure idée à mettre dans certains explicite gracieux résiliation dans les autres threads ou les faire threads d'arrière-plan pour commencer.

Si jamais vous voulez retourner un code de sortie différent de Main, la manière la plus simple d'y parvenir est de déclarer le retour d' int.

En bref, je ne pense pas que vous avez besoin d' Environment.Exit() d'ici, et il vaut la peine de demander à vos collègues exactement pourquoi ils sont d'utilisation, les chances sont qu'ils ne seront pas en mesure de vous donner une bonne raison, et c'est un autre morceau de peluches, vous pouvez couper.

13voto

Anand Points 5381

Fondamentalement, l'énoncé Environment.Exit(0) indique le système d'Exploitation que c'est un "nettoyage" de la sortie. Il y a d'autres numéros de chaque avec un sens différent, comme Environment.Exit(1)

Cependant une chose à noter est que le "Principal" a été déclaré que le retour de rien "vide", de sorte que le code de sortie sera vraiment pas de sens pour elle.

Juste au cas où vous vouliez en savoir plus sur les différents codes de sortie ont un coup d'oeil ici

Codes d'Erreur du système

4voto

Robert Paulson Points 10792

C'est [compatibilité] pour les programmes de ligne de commande pour indiquer le succès ou l'échec à un sous-jacent shell, et est héritée des anciens de style C boucle principale où le prototype de la fonction principale était

int main(void);

int main(int argc, char *argv[]);

La valeur de retour de 0 réfère au succès, tandis que les non-zéro signifie l'échec ou autre chose, selon ce que le programmeur a décidé.

Référence:

wiki pour plus d'informations sur l' main fonction.

MSDN documenttion sur Environment.Exit()

De l'environnement.Exit() : met fin à ce processus et donne à l' - système d'exploitation le spécifié code de sortie.

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