Ho un thread di lavoro che è di vitale importanza per la mia applicazione.
Viene creato con new Thread(method).Start();
Non ci faccio parte, mi aspetto che venga eseguito finché il mio programma è in esecuzione.
Tuttavia, può succedere che si verifichi un'eccezione su questo thread; e come conseguenza il thread sarà (a parte qualche ultimo logging) shutdown. Un recupero non è possibile per questo errore critico. Poiché il thread è di vitale importanza per l'app, deve anche essere chiuso.Come monitorare un thread di vitale importanza
Ora la mia domanda è: Come posso monitorare lo stato del mio thread?
Volete
- sondaggio proprietà
IsAlive
? - rilancia l'eccezione rilevata e funziona con
AppDomain.CurrentDomain.UnhandledException
? - implementare uno
event
che segnalerà la fine del mio thread in background? - utilizzare un
BackgroundWorker
, che implementaRunWorkerCompleted
? (Ma un BackgroundWorker è davvero la scelta giusta per i thread di lunga durata?) - qualcosa di completamente diverso?
EDIT:
In questo momento, ho risolto il problema chiamando Application.Exit()
->incidente presto e spesso. Questo è un'opzione, troppo :)
Ma ho bisogno di un riferimento a un controllo - solo per questo purpuse:/ – tanascius
Un controllo è un modo conveniente per eseguire il codice sul thread dell'interfaccia utente. Non necessariamente l'unico modo. Di solito è necessario tornare indietro ad un certo punto, tendo a preferire al più presto. –