如果报告进度,BackgroundWorker会崩溃

时间:2012-08-28 08:30:21

标签: c# backgroundworker

我有一个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() );,原因是“调用目标已抛出异常。”

如果我不报告进度,一切正常。有谁知道为什么?我的猜测是这与线程有关,但我不知道如何。

2 个答案:

答案 0 :(得分:3)

只是一些建议:

1。)检查TargetInvocationException例外的InnerException property

2.。)一旦抛出异常,就将Visual Studio配置为停止:

enter image description here

这有助于更接近错误。

答案 1 :(得分:1)

也许您认为ReportProgress正在阻止并准备// calculations ...中的代码所依赖的内容。不是说阻止:

  

对ReportProgress方法的调用是异步的,并立即返回。

http://msdn.microsoft.com/en-us/library/ka89zff4.aspx