在线程中取消BackgroundWorker

Mik*_*lls 2 c# backgroundworker request-cancelling

我使用BackgroundWorker和C#进行了更长时间的多步骤过程.我需要确保每个步骤都已成功完成,然后再继续下一步.我已经看到许多引用让BackgroundWorker捕获错误并取消单击"取消"按钮,但我想自己检查错误然后优雅地结束该过程.我是否像点击取消按钮那样对待它,还是有另一种方式?

Kyl*_*ndo 5

鉴于BackgroundWorkerbgWrk:

您可以设置bgWrk.Cancel = true;何时发生错误.这样做会产生以下影响:

然后将CancellationPending标志切换为true,您可以定期检查后台工作程序,然后相应地取消.据我所知,这将被认为是做到这一点的"最佳实践".

然后,如果CancellationPending设置了标志,则可以确保不再运行代码,并且基本上等待从调用者取消.它应该优雅地为你工作.

  • 此外,DoWork应设置Args.Canceled = true以将取消状态传递给Completed事件. (2认同)