Eccezioni non gestite in BackgroundWorker

Ho una piccola applicazione WinForms che utilizza un object BackgroundWorker per eseguire un’operazione di lunga durata.

L’operazione in background genera eccezioni occasionali, in genere quando qualcuno ha un file aperto che viene ricreato.

Indipendentemente dal fatto che il codice venga eseguito dall’IDE o non da .NET, viene visualizzata una finestra di errore che informa l’utente che si è verificata un’eccezione non gestita. Compilare il codice utilizzando la configurazione di rilascio non cambia neanche questo.

Secondo MSDN :

Se l’operazione genera un’eccezione che il tuo codice non gestisce, BackgroundWorker cattura l’eccezione e la trasferisce nel gestore di eventi RunWorkerCompleted, dove viene esposta come proprietà Error di System.ComponentModel .. ::. RunWorkerCompletedEventArgs. Se si esegue il debugger di Visual Studio, il debugger si interromperà al punto nel gestore di eventi DoWork in cui è stata sollevata l’eccezione non gestita.

Mi aspetto che queste eccezioni vengano generate occasionalmente e vorrei gestirle nell’evento RunWorkerCompleted piuttosto che in DoWork. Il mio codice funziona correttamente e l’errore viene gestito correttamente all’interno dell’evento RunWorkerCompleted ma non riesco, per tutta la vita, a capire come interrompere la finestra di dialogo di errore .NET che si lamenta del verificarsi dell’eccezione non gestita.

Il Visualizzatore di immagini non è in grado di rilevare automaticamente l’errore in questione? Non è quello che afferma la documentazione MSDN? Che cosa devo fare per informare .NET che questo errore viene gestito mentre ancora consente all’eccezione di propagarsi nella proprietà Error di RunWorkerCompletedEventArgs?