在RunWorkerCompletedEventHandler中获取原始引发的异常

时间:2013-12-09 10:29:18

标签: c# .net wcf backgroundworker

我在wcf项目中使用后台工作程序来处理异步Web服务。

以下是我正在初始化工人的方式:

 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似乎不是我提出的orignal Exception!实际上,我无法将其转换为WebFaultException并且它错过了我作为参数传递的'MyAsyncResult'对象。你们有没有这种问题吗?

1 个答案:

答案 0 :(得分:1)

您需要将e.Error强制转换为WebFaultException<MyAsyncResult>!非通用WebFaultException是另一回事。