背景工人事件处理

jon*_*n37 5 c# debugging multithreading backgroundworker

我一直在背景工作线程中处理事件处理.

我遇到的所有文档都让我相信,当DoWork事件处理程序抛出异常时,应该在RunWorkerCompleted处理程序中处理异常,并且该异常将在RunWorkerCompletedEventArgs的Error属性中可用.

这很好,但在调试期间,我总是看到用户代码消息未处理的异常.这让我相信我的方法存在问题.

我应该采取什么措施来解决这个问题?

此致,乔纳森

Mic*_*tta 2

我以前见过这种行为,并且通过使用以下属性装饰 DoWork 处理程序来解决它System.Diagnostics.DebuggerNonUserCode

[System.Diagnostics.DebuggerNonUserCode]
void bw_DoWork(object sender, DoWorkEventArgs e)
{ ... }
Run Code Online (Sandbox Code Playgroud)

请注意,只有在调试器中运行时您才会看到这一点;即使没有该属性,从 shell 运行时一切都应该如此。

我又查了一下,我仍然看不出你需要这样做的任何充分理由。我称之为调试器错误功能。