C# 后台工作人员不';无法处理异常

C# 后台工作人员不';无法处理异常,c#,multithreading,C#,Multithreading,我真的读过Stackoverflow上所有其他类似的帖子。没有什么适合我的。。。 我抛出类型为“exception”的异常,但无法处理该异常 我在DoWork进程中,在CompletedEvent中尝试过它(使用try/catch,witch e.error…) 有什么想法吗 感谢您的努力如果您所说的“无法处理”异常是指无法使用捕获,那是真的。您只需使用Error属性。您可以将其“抛出”到已完成的事件处理程序中;但你们堆叠的框架会有所不同 e、 g: 如果您所说的“不能处理”异常是指不能使用ca

我真的读过Stackoverflow上所有其他类似的帖子。没有什么适合我的。。。 我抛出类型为“exception”的异常,但无法处理该异常

我在DoWork进程中,在CompletedEvent中尝试过它(使用try/catch,witch e.error…)

有什么想法吗

感谢您的努力

如果您所说的“无法处理”异常是指无法使用
捕获
,那是真的。您只需使用Error属性。您可以将其“抛出”到已完成的事件处理程序中;但你们堆叠的框架会有所不同

e、 g:

如果您所说的“不能处理”异常是指不能使用
catch
,则是正确的。您只需使用Error属性。您可以将其“抛出”到已完成的事件处理程序中;但你们堆叠的框架会有所不同

e、 g:


BackgroundWorkers DoWork函数中发生的任何未经处理的异常都将导致worker在事件参数将包含错误的位置激发RunWorkerCompleted

BackgroundWorkers DoWork函数中发生的任何未经处理的异常都将导致worker在事件参数包含错误的地方触发RunWorkerCompleted

我通常只是在工作方法中捕捉它并将结果设置为它

private void BGW_DoWork(object sender, DoWorkEventArgs e)
{
    ...
}
catch (Exception ex)
{
    e.Result = ex;
}
然后查看已完成的事件

私有void BGW_RunWorkerCompleted(对象发送方,RunWorkerCompletedEventArgs e) { this.Cursor=Cursors.Default

try
{
    Exception ex = e.Result as Exception;
    if (null != ex)
        throw ex;

我通常只是在work方法中捕捉它,并将结果设置为它

private void BGW_DoWork(object sender, DoWorkEventArgs e)
{
    ...
}
catch (Exception ex)
{
    e.Result = ex;
}
然后查看已完成的事件

私有void BGW_RunWorkerCompleted(对象发送方,RunWorkerCompletedEventArgs e) { this.Cursor=Cursors.Default

try
{
    Exception ex = e.Result as Exception;
    if (null != ex)
        throw ex;

在RunWorkerCompleted中处理异常是一条可行之路。我认为您的代码没有问题。请提供最小的工作示例项目。在RunWorkerCompleted中处理异常是一条可行之路。我认为您的代码没有问题。请提供最小的工作示例项目。是的,我的意思是我无法捕获异常。“您可以将其放入已完成的事件处理程序中,但是…”这是什么意思?@user1011394添加了详细信息来回答。感谢您的回答。我已经尝试过了。行为是一样的。我无法捕获异常…在调试模式(VS)下,调试器跳转到失败状态(抛出新异常(“…”))如果我运行.exe文件,应用程序就会崩溃…@user1011394您必须提供更多详细信息,因为我提供的代码工作得很好。也就是说,在我们知道这是什么之前,您还没有详细说明那里发生的事,我们只能猜测(通常是错误的)。唯一的问题是,GetResponse()是在项目中包含的DLL中。但是GetResponse()只有一行…“抛出新异常”…没有更多详细信息,这真的很奇怪是的,我的意思是我无法捕获异常。你说“你可以将其抛出到已完成的事件处理程序中,但是…”是什么意思?@user1011394为答案添加了详细信息。感谢您的回复。我已经尝试过了。行为是一样的。我无法捕获异常…在调试模式(VS)下,调试器跳转到失败状态(抛出新异常(“…”))如果我运行.exe文件,应用程序就会崩溃…@user1011394您必须提供更多详细信息,因为我提供的代码工作得很好。也就是说,在我们知道这是什么之前,您还没有详细说明那里发生的事,我们只能猜测(通常是错误的)。唯一的问题是,GetResponse()在项目中包含的DLL中。但是GetResponse()只有一行…“抛出新异常”…没有更多详细信息,这真的很奇怪