2
  • メイン アプリケーションが新しい BackgroundWorker X を作成する
  • X の DoWork イベント ハンドラは、コントローラのメソッド Y を呼び出します。このメソッドは、AsyncCallback を使用して WebRequest (非同期) インスタンスとコールバックを作成します。
  • 応答が到着すると、コールバック メソッド Z が呼び出され、コンテンツが分析されます。応答に不要なコンテンツが含まれる場合があります。その時点で、コールバック Z が例外をスローします。

メイン アプリケーションでこの例外をキャッチしたいと考えています。DoWork と RunWorkerCompleted で試しましたが、そこから何もキャッチできません。

RunWorkerCompletedEventArgs のエラーは常に null です。

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 に答える