2013-12-09 45 views
0

我在我的wcf項目中使用後臺工作來處理異步Web服務。在RunWorkerCompletedEventHandler中獲取原始引發的異常

這裏是我如何初始化工作人員:

worker.DoWork += new DoWorkEventHandler(DoWork); 
worker.RunWorkerCompleted += new RunWorkerCompletedEventHandler(RunWorkerCompleted); 
worker.RunWorkerAsync(); 

處理錯誤,我在我的DoWork方法引發異常......像這樣:

throw new WebFaultException<MyAsyncResult>(
    new MyAsyncResult("Description of the error"), 
    HttpStatusCode.InternalServerError 
); 

最後,我得到此異常RunWorkerCompleted:

void RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e) 
{ 
    if (!(e.Error == null)) 
    { 
     < Do something with e.Error > 
    } 
    else 
    ... 
} 

我的問題:

我得到的e.Error似乎不是我提出的原始異常!事實上,我不能將它轉換爲WebFaultException,並且它忽略了我作爲參數傳遞的'MyAsyncResult'對象。你有沒有這種問題?

+1

有'e.Error'是'InnerException'嗎? – JeffRSon

+0

您是否真的檢查過e.Error確實包含哪種類型的對象? –

+0

@JeffRSon e.Error as no ExceptionException – Nicolas

回答

1

您需要將e.Error轉換爲WebFaultException<MyAsyncResult>!非通用的WebFaultException是另一回事。

+0

就是這樣!謝謝 – Nicolas