Risposte:
Puoi usare Environment.Exit(0);
eApplication.Exit
Environment.Exit(0)
è più pulito .
Environment.Exit
richiede di disporre delle autorizzazioni SecurityPermissionFlag.UnmanagedCode, che per alcuni potrebbe essere problematica.
Diverse opzioni, in ordine di modo più appropriato:
System.Environment.Exit
( non portatile! Vedi sotto )Modificato il 9/2013 per migliorare la leggibilità
Ritorno con un codice di uscita specifico: Come sottolinea Servy nei commenti, puoi dichiarare Main con un int
tipo di ritorno e restituire un codice di errore in quel modo. Quindi non c'è davvero bisogno di usare Environment.Exit a meno che non sia necessario terminare con un codice di uscita e non è possibile farlo nel metodo Main. Molto probabilmente puoi evitarlo lanciando un'eccezione e restituendo un codice di errore in Main se un'eccezione non gestita si propaga lì. Se l'applicazione è multi-thread, probabilmente avrai bisogno di ancora più boilerplate per terminare correttamente con un codice di uscita, quindi potresti stare meglio semplicemente chiamando Environment.Exit.
Un altro punto contro l'uso Evironment.Exit
- anche quando si scrivono applicazioni multi-thread - è la riusabilità . Se si desidera riutilizzare il codice in un ambiente che rende Environment.Exit
irrilevante (come una libreria che può essere utilizzata in un server Web), il codice non sarà portatile. La soluzione migliore è ancora, a mio avviso, utilizzare sempre le eccezioni e / o i valori di ritorno che indicano che il metodo ha raggiunto un certo stato di errore / fine. In questo modo, puoi sempre utilizzare lo stesso codice in qualsiasi ambiente .NET e in qualsiasi tipo di applicazione. Se stai scrivendo un'app specifica che deve restituire un codice di uscita o terminare in un modo simile a quello che Environment.Exit
fa, puoi quindi andare avanti e avvolgere il thread al livello più alto e gestire gli errori / le eccezioni secondo necessità.
Le applicazioni della console usciranno al termine dell'esecuzione della funzione principale. Un "ritorno" ci riuscirà.
static void Main(string[] args)
{
while (true)
{
Console.WriteLine("I'm running!");
return; //This will exit the console application's running thread
}
}
Se stai restituendo un codice di errore, puoi farlo in questo modo, accessibile da funzioni esterne al thread iniziale:
System.Environment.Exit(-1);
Puoi usare Environment.Exit(0)
e Application.Exit
.
Environment.Exit()
: termina questo processo e fornisce al sistema operativo sottostante il codice di uscita specificato.