Sto cercando di capire quale dovrebbe essere utilizzato. Alla chiusura della mia app WinForm si attiva un modulo in modalità finestra di dialogo. Questo modulo esegue un worker in background che sincronizza il DB con il DB remoto e visualizza i suoi progressi su "Splash Form".Application.Exit() vs Application.ExitThread() vs Environment.Exit()
Ho un metodo in questo modo:
private void CloseMyApp()
{
SaveUserSettings();
splashForm = new SplashForm();
splashForm.ShowDialog();
Application.ExitThread();
//Application.Exit();
}
che è quello che io chiamo di chiudere la mia app da Menu -> Esci e nel caso . Application.Exit()
dà il seguente errore ->
Raccolta è stata modificata; l'operazione di enumerazione potrebbe non essere eseguita.
Ora ho letto che Environment.Exit()
è brutale e significa che c'è probabilmente qualcosa che non va con la tua applicazione (vedi here).
Application.ExitThread()
funziona ma sono certo che potrebbe essere solo APPEARTO funzionare e come non l'ho mai usato prima non sono sicuro quando è normalmente opportuno farlo.
Oppure, se è necessario eseguire un fail veloce dopo aver rilevato un errore in un gestore di errori di primo livello, dopo averlo registrato, se possibile, ovviamente. –