Выдает исключение из BackgroundWorker, которое вызывает асинхронность метод (веб-запрос) - PullRequest
2 голосов
/ 09 апреля 2010
  • Мое основное приложение создает новый BackgroundWorker X
  • обработчик событий DoWork X вызывает метод Y моего контроллера. Этот метод создает экземпляр WebRequest (async.) И обратный вызов с использованием AsyncCallback.
  • Когда приходит ответ, вызывается метод обратного вызова Z, и контент анализируется. Может случиться так, что ответ содержит нежелательный контент. В этот момент обратный вызов Z сгенерирует исключение.

Я хочу поймать это исключение в моем основном приложении. Я попробовал это в DoWork и RunWorkerCompleted, но оттуда ничего не поймано.

Ошибка в RunWorkerCompletedEventArgs всегда равна нулю.

1 Ответ

2 голосов
/ 09 апреля 2010

Не знаю, что ты делаешь неправильно. Но это работает как шарм.

        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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...