Da al di fuori dell'applicazione, c'è qualche differenza traDifferenza tra Environment.Exit e semplice ritorno 2 da Main
...
Environment.Exit(2)
e
static int Main()
{
...
return 2;
}
?
Da al di fuori dell'applicazione, c'è qualche differenza traDifferenza tra Environment.Exit e semplice ritorno 2 da Main
...
Environment.Exit(2)
e
static int Main()
{
...
return 2;
}
?
La differenza più ovvia è che è possibile chiamare Environment.Exit da qualsiasi posizione nel codice. A parte questo:
Environment.Exit
interromperà comunque il processo.Environment.Exit
termina il processo senza srotolando lo stack ed eseguendo infine blocchi (almeno secondo i miei esperimenti). Ovviamente quando si torna da Main
si è già al livello più alto per quanto riguarda il codice gestito.Environment.Exit
richiede l'autorizzazione di protezione adeguato, in modo da non funzionerà per le applicazioni meno fidati.Avendo visto l'aggiornamento della domanda, non sono del tutto sicuro di cosa intendi. In entrambi i casi il processo sarà solo uscire con un codice di 2 ...
Environment.Exit(2)
può essere utilizzato ovunque. return 2
solo all'interno della funzione Main()
.
+1 Dichiarare l'ovvio, ma comunque un buon punto. –
Domanda aggiornata: c'è qualche differenza dall'esterno dell'applicazione? –
Se si sta facendo un test di unità e chiamando principale
Program.Main(args);
poi Environment.Exit rifletterà sempre un fallimento. Dove l'utilizzo del reso funzionerà come previsto.
Vedere http://stackoverflow.com/questions/713805/net-finalizers-and-exit0 per dettagli sulla finalizzazione alla fine del processo. –