2010-12-09 68 views
1

我需要在DoWork期间捕获错误,并且如果错误属于某种类型,请重新运行相同的BachgroundWorker。已经尝试取消它,并在Completed事件期间致电RunWorkerAsync(),但没有运气(例外情况出现,表示我的背景工作者对象已被取消)。如何重新运行BackgroundWorker

+0

不会处理backgroundworker里面的错误DoWork更有意义吗? – 2010-12-09 10:36:07

+0

我做它的处理,但它继续完成事件处理程序无论如何...可能是GOTO的方式? – 0x49D1 2010-12-09 10:41:47

回答

3

我猜测Bgw仍然处于Error/Canceled状态,直到Completed事件完成。

有几个选项:

  • 重启内部DoWork的逻辑
  • 开始从已完成的事件的另一 BGW。

Bgw本身并不昂贵,因此重用特定实例没有多大意义。线程来自ThreadPool。