Ho un'applicazione C# multi-threaded e ha il lock reader reader, ma dà un'eccezione di timeout su alcuni computer (non essendo in grado di acquisire un lock in tempo) e ho bisogno di chiudere forzatamente tutti i thread. come faccio a fare senza eccezioni?Come forzare l'applicazione di uscita in C#?
risposta
Environment.FailFast potrebbe essere quello che stai cercando, ma prenditi cura degli effetti collaterali: nessun finalizzatore, infine blocchi o altro viene eseguito. Termina davvero il processo ORA.
ok, l'ho usato e mi ha dato questa eccezione: Il runtime ha riscontrato un errore irreversibile. L'indirizzo dell'errore era a 0x044f07bd, sul thread 0xfb0. Il codice di errore è 0x80131623. Questo errore potrebbe essere un bug nel CLR o nelle parti non sicure o non verificabili del codice utente. Le fonti comuni di questo bug includono errori di marshalling dell'utente per COM-Interop o PInvoke, che possono danneggiare lo stack. – armin
Vale la pena citare l'opzione di Environment.Exit. Entrambi sono garantiti per uscire praticamente subito, ma Exit non genera un evento di errore evento di sistema e avvia il finalizzatore try/finally. – angularsen
Per uscire con forza l'applicazione da subito è possibile utilizzare Environment.FailFast()
Se si vuole uccidere programma senza alcun messaggio di eccezione dal sistema, dopo aver per esempio errore fatale, è possibile utilizzare:
Process.GetCurrentProcess().Kill()
Ho usato questo e ha funzionato, grazie. – Jeremy
penso la soluzione migliore per forzare uscita applicazione è di utilizzare la seguente riga di codice:
Environment.Exit(0)
Envrironment.FailFast()
finisce con un eccezione di runtime.
Grazie - questo ha funzionato meglio per me perché volevo evitare le eccezioni. – stuzor
Questa potrebbe essere una risposta irrilevante se si sta cercando un codice C# puro per terminare l'applicazione, ma è possibile utilizzare un modulo nativo di processi di terminazione come il comando taskkill
, che terminerà sicuramente l'applicazione.
Provalo. Aggiungi prima il riferimento al sistema.
using System.Diagnostics;
Ovunque è necessario terminare il processo,
String process = Process.GetCurrentProcess().ProcessName;
Process.Start("cmd.exe", "/c taskkill /F /IM " + process + ".exe /T");
/F
- le forze per terminare./T
- Termina la struttura del processo (processo e qualsiasi altro processo avviato da esso)./IM
- Nome immagine o nome processo.
- 1. Parametro di uscita in C#
- 2. funzioni uscita in C
- 3. Forzare l'ordine dei campi di uscita dal comando cut
- 4. Apice in uscita console C++
- 5. Cattura uscita audio in C#
- 6. Allineamento colonne in uscita C
- 7. Uscita Spiegazione di questo programma in C?
- 8. Uscita di decodifica in C Programma
- 9. Redirect uscita di processo C#
- 10. Come posso forzare un errore di compilazione in C++?
- 11. Parametro di uscita Populate C
- 12. Formattazione C# uscita
- 13. Uscita Doxygen per C
- 14. Uscita codice C variabile
- 15. Perché lapplicazione non funziona su oggetti S4 che hanno un metodo as.list.default?
- 16. Uscita immediata del ciclo 'while' in C++
- 17. WinForms C# DataGridView forzare l'aggiornamento
- 18. Come leggere il codice di uscita di PowerShell tramite C#
- 19. C++ reindirizzare le connessioni in uscita
- 20. uscita errato durante l'esecuzione di codice C
- 21. Uscita console colore con C++ in Windows
- 22. C# ASP.NET Pagina Evento in uscita?
- 23. Errore uscita flusso Unicode C++ di Windows
- 24. Interfaccia C++ e R, uscita
- 25. C avvertimento implicito della dichiarazione di 'uscita'
- 26. C++ funtore di uscita dell'adattatore iteratore
- 27. Come forzare% 20 invece di + in System.Net.WebUtility.UrlEncode
- 28. Significato del codice di uscita 11 in C?
- 29. Console di uscita rotaie dopo uscita lunga
- 30. Come forzare layoutsubviews di UIView.
'Environment.FailFast (int)' ucciderà la tua applicazione il più velocemente possibile. – vcsjones
Possibile duplicato di http://stackoverflow.com/questions/1057151/application-exit – angularsen