2010-10-19 13 views
5

wiem, że można obsługiwać błędy BackgroundWorker w RunWorkerCompleted obsługi, jak w następnym kodzieobsługi błędów z BackgroundWorker

var worker = new BackgroundWorker(); 
worker.DoWork += (sender, e) => 
    { 
     throw new InvalidOperationException("oh shiznit!"); 
    }; 
worker.RunWorkerCompleted += (sender, e) => 
    { 
     if(e.Error != null) 
     { 
      MessageBox.Show("There was an error! " + e.Error.ToString()); 
     } 
    }; 
worker.RunWorkerAsync(); 

Ale moim problemem jest to, że ciągle pojawia się komunikat: błąd został unhadled w kodzie użytkownika on-line

throw new InvalidOperationException("oh shiznit!"); 

Jak mogę rozwiązać ten problem?

+0

Czy testujesz to w aplikacji WinFormss? Lub konsola? –

Odpowiedz

9

Otrzymujesz to, ponieważ masz podłączony debugger. Spróbuj uruchomić aplikację bez debuggera: nie uruchamia się żaden wyjątek, a gdy pracownik zakończy operację, wyświetli komunikat MessageBox.

+0

tak, to jest poprawne – mike

+4

oznaczyć to jako odpowiedź! – Tim

1

Nie mogę odtworzyć błędu. Następujące działa poprawnie:

public partial class Form1 : Form 
{ 
    public Form1() 
    { 
     InitializeComponent(); 
    } 

    private void button1_Click(object sender, EventArgs e) 
    { 
     var worker = new BackgroundWorker(); 
     worker.DoWork += (s, evt) => 
     { 
      throw new InvalidOperationException("oops"); 
     }; 
     worker.RunWorkerCompleted += (s, evt) => 
     { 
      if (evt.Error != null) 
      { 
       MessageBox.Show(evt.Error.Message); 
      } 
     }; 
     worker.RunWorkerAsync(); 
    } 
} 
Powiązane problemy