Я думал, что объект BackgroundWorker будет перехватывать и передавать исключения, возникшие в обработчике DoWork, в обработчик RunWorkerCompleted, но это не происходит с моей программой.
Я создал следующую небольшую программу для иллюстрации проблемы. Создано приложение wpf.
открытый частичный класс MainWindow: Window
{
public MainWindow ()
{
InitializeComponent ();
ExecBackgrpundWorker ();
}
public void ExecBackgrpundWorker()
{
var bw = new BackgroundWorker();
bw.DoWork += new DoWorkEventHandler(bw_DoWork);
bw.RunWorkerCompleted += new RunWorkerCompletedEventHandler(bw_RunWorkerCompleted);
bw.RunWorkerAsync();
}
void bw_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
try
{
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
void bw_DoWork(object sender, DoWorkEventArgs e)
{
throw new NotImplementedException("Do Work Exception");
}
}
исключения, возникшие в bw_DoWork, никогда не передаются в bw_RunWorkerCompleted.
Как правильно обработать это исключение.