2
  • 我的主应用程序创建了一个新的 BackgroundWorker X
  • X 的 DoWork 事件处理程序调用我的控制器的方法 Y。此方法使用 AsyncCallback 创建 WebRequest (async.) 实例和回调。
  • 当响应到达时,将调用回调方法 Z 并分析内容。响应可能包含不需要的内容。那时回调 Z 将抛出异常。

我想在我的主应用程序中捕获这个异常。我在 DoWork 和 RunWorkerCompleted 中尝试过,但从那里无法捕捉到任何东西。

RunWorkerCompletedEventArgs 中的错误始终为空。

4

1 回答 1

2

不知道你在做什么错。但这就像魅力一样。

        BackgroundWorker bw = new BackgroundWorker();
        bw.DoWork += (o, s) => { throw new Exception("myMessage"); };
        bw.RunWorkerCompleted += (o, s) => { Console.WriteLine(s.Error.Message); };
        bw.RunWorkerAsync();
        Console.ReadKey(true);

因此,这意味着您的异常必须在某个地方被捕获,因此无法传播到 BWWorkCompletedEventArgs

于 2010-04-09T16:59:13.977 回答