Domanda

Sono il mantenimento di un certo numero di applicazioni di console sul lavoro e una cosa Ho notato in un certo numero di loro è che loro chiamano Environment.Exit (0).

Un esempio di programma sarebbe simile a questa:

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

Non capisco quello che l'intento del programmatore originale era nel fare questo? Nella mia mente, anche senza la dichiarazione Environment.Exit il programma dovrebbe uscire bene. Detto questo, per uno di questi programmi, è finestra della console è stato rimanendo anche dopo che è stato supposto di aver chiuso, quindi non sono davvero sicuro di quello che sta succedendo lì ....

Mi manca qualcosa qui? O c'è un motivo per cui Environment.Exit dovrebbe essere chiamato in questo caso?

È stato utile?

Soluzione

L'unica ragione per la chiamata Exit() come l'ultima riga del metodo principale è se ci potrebbe essere altri thread in primo piano in esecuzione. Sarebbero rimanere in esecuzione se l'esecuzione appena è caduto alla fine del Main. Anche in questo caso, sarebbe di solito essere una migliore idea sia per mettere in qualche terminazione grazioso esplicito nelle altre discussioni -. O renderli thread in background per iniziare

Se vi capitasse di voler restituire un codice di uscita diverso da Main, il modo più semplice per raggiungere questo obiettivo è quello di dichiararlo per tornare int.

In breve, non credo che avete bisogno di Environment.Exit() qui, e vale la pena chiedere ai vostri colleghi esattamente il motivo per cui lo si utilizza - è probabile che essi non saranno in grado di darvi una buona ragione, ed è un altro po 'di fluff è possibile tagliare fuori.

Altri suggerimenti

In pratica il Environment.Exit(0) dichiarazione indica al sistema operativo che si tratta di un'uscita "pulita". Ci sono altri numeri così ognuno con un significato diverso, come Environment.Exit(1)

Tuttavia una cosa da notare è che il "principale" è stato dichiarato come il ritorno niente "vuoto", in modo che il codice di uscita sarà davvero non avere un significato ad esso.

Nel caso in cui si voleva sapere di più sui diversi codici di uscita di dare un'occhiata qui

sistema Codici di errore

Questo è [compatibilità] per i programmi a linea di comando per indicare il successo o il fallimento di un guscio sottostante, e viene ereditato da vecchi principali loop stile C dove il prototipo della funzione principale era

int main(void);

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

Il valore di ritorno di 0 successo significava tradizionalmente, mentre diverso da zero significa fallimento o altro, a seconda di ciò che il programmatore ha deciso.

Riferimento :

wiki per ulteriori informazioni sulla funzione main.

MSDN documenttion su Environment.Exit()

  

Environment.Exit (): Termina questo processo e dà la   sistema operativo sottostante   codice di uscita specificato.

Questo è veramente utilizzato quando altre applicazioni sono in attesa del risultato della console app. Ad esempio, SSRS (strumento) può lanciare una console app, e aspetta di tornare un successo di risposta di errore. L'Environment.Exit (0) restituisce un messaggio di corretta esecuzione.

In SSIS quando si ha un eseguire il processo di task e si desidera sapere se il processo è il fallimento, questo metodo è utile.

Nel nucleo .net, che fin da oggi, si deve usare Environment.Exit di sospendere il loro programma su Mac. Puramente ritorno da main non si ferma il processo e si continua a funzionare fino a quando l'utente interrompe esso. Modelli come:

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

sono comuni nel mio posto di lavoro perché vogliamo spedire per Windows e Mac.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top