C# 在RunWorkerCompletedEventHandler中获取原始引发的异常
我在我的wcf项目中使用后台工作人员来处理异步web服务 以下是我初始化工作进程的方式:C# 在RunWorkerCompletedEventHandler中获取原始引发的异常,c#,.net,wcf,backgroundworker,C#,.net,Wcf,Backgroundworker,我在我的wcf项目中使用后台工作人员来处理异步web服务 以下是我初始化工作进程的方式: worker.DoWork += new DoWorkEventHandler(DoWork); worker.RunWorkerCompleted += new RunWorkerCompletedEventHandler(RunWorkerCompleted); worker.RunWorkerAsync(); 要处理错误,我必须在DoWork方法中引发异常。。。像这样: throw new W
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
);
抛出新的WebFaultException(
新的MyAsyncResult(“错误描述”),
HttpStatusCode.InternalServerError
);
最后,我在RunWorkerCompleted中得到了这个异常:
void RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
if (!(e.Error == null))
{
< Do something with e.Error >
}
else
...
}
void RunWorkerCompleted(对象发送方,RunWorkerCompletedEventArgs e)
{
如果(!(e.Error==null))
{
<用e.Error做点什么>
}
其他的
...
}
我的问题:
我得到的e.错误似乎不是我提出的原始异常!事实上,我不能将其转换为WebFaultException,它会丢失我作为参数传递的“MyAsyncResult”对象。你们中有人遇到过这种问题吗?你们需要将e.Error转换成
WebFaultException
!非通用的WebFaultException
是另一回事。有e.Error
一个InnerException
?您是否确实检查了e.Error包含的对象类型?@jefferson e.Error为否InnerException@WillDean(即错误为WebFaultException)为false。但是e.Error.GetType().Name给出了“WebFaultException`1”