我有一个BackgroundWorker,可以调用类中的方法。该方法被赋予对BackgroundWorker的引用,以便它可以报告其进度。这个伪代码显示了大纲:
void BackgroundWorker_DoWork( object sender )
{
BackgroundWorker w = sender as BackgroundWorker;
var c = new ProcessingClass()
c.someMethod( w )
}
class ProcessingClass()
{
someMethod( BackgroundWorker w )
{
w.ReportProgress(50)
//calculations...
}
}
问题是,在报告进度后进行“计算”时,程序将崩溃。调试器在启动“程序”类中跳转到Application.Run( new frmMain() );
,原因是“调用目标已抛出异常。”
如果我不报告进度,一切正常。有谁知道为什么?我的猜测是这与线程有关,但我不知道如何。
答案 0 :(得分:3)
只是一些建议:
1。)检查TargetInvocationException
例外的InnerException
property。
2.。)一旦抛出异常,就将Visual Studio配置为停止:
这有助于更接近错误。
答案 1 :(得分:1)
也许您认为ReportProgress正在阻止并准备// calculations ...
中的代码所依赖的内容。不是说不阻止:
对ReportProgress方法的调用是异步的,并立即返回。