Как перезапустить BackgroundWorker - PullRequest
1 голос
/ 09 декабря 2010

Мне нужно отловить ошибку во время DoWork и, если ошибка имеет какой-либо тип, перезапустите тот же BachgroundWorker. Уже пытался отменить его и вызвать RunWorkerAsync() во время события Completed, но безуспешно (появляется исключение, говорящее, что мой объект backgroundworker был отменен).

1 Ответ

3 голосов
/ 09 декабря 2010

Я бы предположил, что Bgw остается в состоянии Error / Cancelled до тех пор, пока не завершится событие Completed.

Несколько вариантов:

  • перезапустить логику внутри DoWork
  • start еще один Bgw из завершенного события.

Сам Bgw не дорогой, поэтому нет смысла повторно использовать конкретный экземпляр.Темы приходят из ThreadPool.

...