从调用异步的BackgroundWorker中抛出异常。方法(Webrequest)

时间:2010-04-09 16:49:04

标签: c# exception backgroundworker webrequest asynccallback

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

我想在我的主应用程序中捕获此异常。 我在DoWork和RunWorkerCompleted中尝试过,但没有任何东西可以从那里捕获。

RunWorkerCompletedEventArgs中的错误始终为null。

1 个答案:

答案 0 :(得分: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