[英]BackgroundWorker doesn't handle exception
我真的已經閱讀了Stackoverflow上的所有其他類似線程。 對我沒有任何幫助...我拋出“ Exception”類型的異常,但我無法處理該異常。
我已經在DoWork Progress中的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("..!");
}
有任何想法嗎?
感謝您的努力
我通常只是在工作方法中將其捕獲並為其設置結果。
private void BGW_DoWork(object sender, DoWorkEventArgs e)
{
...
}
catch (Exception ex)
{
e.Result = ex;
}
然后查看Completed事件,
私人無效BGW_RunWorkerCompleted(對象發送者,RunWorkerCompletedEventArgs e){this.Cursor = Cursors.Default;
try
{
Exception ex = e.Result as Exception;
if (null != ex)
throw ex;
...
如果通過“無法處理”異常意味着您不能使用catch
,那就是對的。 您只使用Error屬性。 您可以將其“拋出”在Completed事件處理程序中; 但隨后您的堆疊框架將有所不同。
例如:
try
{
if(e.Error != null) throw(e.Error)
// handle success case
}
catch(MyException exception)
{
// handle specific error.
}
BackgroundWorkers DoWork函數中發生的任何未處理的異常都將導致工作程序激發RunWorkerCompleted,其中事件參數將包含該錯誤。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.