我真的读过Stackoverflow上所有其他类似的线程。没有什么对我有用...... 我抛出“异常”类型的异常,但我无法处理异常。
我在DoWork进程中尝试了它,在CompletedEvent中(使用try / catch,巫婆e.error ....)
void bgGetResponse_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
if (e.Error != null)
{
MessageBox.Show(e.Error.Message);
ConvertByte(myFile);
myFile= null;
}
}
void bgGetResponse_DoWork(object sender, DoWorkEventArgs e)
{
byte[] test= new byte[] { 1, 1, 0, 1, 1};
//Here the error occured (just with throw new Exception("error"))
//The method only throws an exception (for test purposes)
testResponse= _configManager.GetResponse(test, 0);
}
GetResponse(...)
{
throw new Exception("..!");
}
有什么想法吗?
感谢您的努力
答案 0 :(得分:2)
我通常只是在工作方法中捕获它并将结果设置为它。
private void BGW_DoWork(object sender, DoWorkEventArgs e)
{
...
}
catch (Exception ex)
{
e.Result = ex;
}
然后查看已完成的事件,
private void BGW_RunWorkerCompleted(对象发件人,RunWorkerCompletedEventArgs e) { this.Cursor = Cursors.Default;
try
{
Exception ex = e.Result as Exception;
if (null != ex)
throw ex;
...
答案 1 :(得分:1)
如果"无法处理"您所说的例外无法使用catch
,这是真的。您只需使用Error属性。你可以"扔"在您的Completed事件处理程序中;但是你堆叠的框架会有所不同。
e.g:
try
{
if(e.Error != null) throw(e.Error)
// handle success case
}
catch(MyException exception)
{
// handle specific error.
}
答案 2 :(得分:1)
BackgroundWorkers DoWork函数中发生的任何未处理的异常将导致worker触发RunWorkerCompleted,其中event参数将包含错误。