A quanto pare sul BackgroundWorker ci sono più domande sbagliate che corrette. Una di esse chiede come si può controllare se si è verificato un errore nell'esecuzione del metodo in background. La seguente soluzione è segnalata come corretta (il codice è inserito nel gestore dell'evento RunWorkerCompleted):
if (e.Error == null)
MessageBox.Show("Error");
Ma non è così. La proprietà Error viene impostata sull'eventuale eccezione che si verifica durante l'esecuzione del metodo in background, quindi per sapere se c'è stato un errore si deve controllare se essa è diversa da null:
if (e.Error != null)
MessageBox.Show("Error");
C'è un altra domanda relativa al controllo della condizione di errore in un BackgroundWorker. Questa volta, l'opzione indicata come corretta spiega che, se e.Error è uguale a false, non si è verificata alcuna eccezione. In realtà, poiché Error è di tipo Exception, se c'è stato alcun errore, tale proprietà vale null.