In un'app WPF dispongo di un'attività di accesso al database interrotta, eseguita periodicamente da un timer e questa attività è stata eseguita in un thread di BackgroundWorker.Come gestire le eccezioni da un thread di BackgroundWorker?
In caso di tentativo di connessione non riuscito sollevare un'eccezione tramite la costruzione try_catch
e voglio aggiornare un testo della barra di stato in un thread dell'interfaccia utente.
C'è qualche pre-evento di costruzione di eventi in un BackgroundWorker
per l'implementazione di questo, qualcosa come DoWorkEventHandler
o RunWorkerCompletedEventHandler
, che può essere utilizzato per questo? Se no, come si fa meglio?
Edited (aggiunta):
Se voglio gestire l'eccezione all'interno RunWorkerCompletedEventHandler
, utilizzando e.Error
parametro, non funziona. In caso di eccezioni non gestite nel thread BackgroundWorker
, l'applicazione si blocca e il debugger punta alla stringa di codice che viene inserita all'interno del thread BackgroundWorker
, dicendo che: L'eccezione non è stata gestita dal codice utente.
Quindi, in questo caso, il thread non si ferma solo, segnalando allo RunWorkerCompletedEventHandler
che si è arrestato con errore, ma l'intera applicazione smette di funzionare.
Grazie a tutti per la risposta! Tenendo conto di alcune risposte, ho aggiornato la mia domanda con maggiori dettagli. – rem