2010-10-19 2 views
5

Я знаю, что вы можете обрабатывать ошибки BackgroundWorker в обработчике RunWorkerCompleted, как в следующем кодеобработка ошибок с 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(); 

Но моя проблема заключается в том, что я до сих пор получить сообщение: ошибка unhadled в пользовательском коде на линии

throw new InvalidOperationException("oh shiznit!"); 

Как решить эту проблему?

+0

Вы тестируете это в приложении WinFormss? Или консоль? –

ответ

9

Вы получаете его, потому что у вас есть отладчик прилагается. Попробуйте запустить приложение без отладчика: никакое исключение не запущено, и когда рабочий завершает операцию, вы показываете MessageBox.

+0

да, это правильно – mike

+4

отметьте это как ответ тогда! – Tim

1

Я не могу воспроизвести ошибку. Не работает следующее:

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(); 
    } 
} 
Смежные вопросы