【发布时间】:2010-03-12 20:48:12
【问题描述】:
我正在使用BackgroundWorker 对象及其DoAsync() 方法从一个简单的WinForms 应用程序异步运行一些导入代码。我遇到了一个问题,我不知道正在抛出异常并且线程过早死亡。我最终发现了这一点,现在在阅读Unhandled exceptions in BackgroundWorker 后知道何时抛出异常。
但是,我在调试时仍然遇到问题。如何调试此代码?我想我可以在不使用 BackgrounWorker 的测试应用程序中运行它,但是有没有办法按原样调试它?如果我单步执行实际引发异常的代码,我只会在异常发生时被踢出单步执行。从RunWorkerCompletedEventHandler 重新抛出异常自然也无济于事。
有什么想法!?提前致谢!
【问题讨论】:
-
我现在在这里看到另一个答案,但标题不像我的那样具有描述性。把这个问题留在这里,只是把人们指向旧的问题是否有意义?这是现有链接的链接:stackoverflow.com/questions/258662/…
-
实际上,出于某种原因,我从来没有在任何地方遇到异常。与他们所说的有关 Visual Studio 打破 DoWork 线程的说法不同,我的没有!?我认为我在那里没有任何尝试/捕获...是否有原因它没有在预期的地方中断?
-
我可以在 Visual Studio 的“异常”菜单中禁用此异常吗?我在“托管调试助手”下看到“AsynchronousThreaAbort”,但这似乎没有做任何事情......
-
AsyncCompletedEventArgs (msdn.microsoft.com/en-us/library/…) 中是否设置了错误?
-
是的,我很好地处理了错误,只是 Visual Studio 没有在实际引发异常的代码处中断。
标签: c# .net debugging asynchronous backgroundworker