backgroundworker:如何执行方法并支持取消_DoWork?

发布于 2024-11-29 06:46:00 字数 344 浏览 1 评论 0原文

参考了MSDN并发现通过触发事件来取消BackgroundWorker的_DoWork()非常容易。

我想知道如何在使用我在 _DoWork() 中调用的另一个方法中执行工作时取消 _DoWork()。

这可能吗?

http://pastebin.com/wHrrBWKZ

谢谢,

马特

I have referred to MSDN and found out that it is quite easy to cancel a BackgroundWorker's _DoWork(), by trigger an event.

I would like to know how to cancel _DoWork() while performing work in another method that I've called within _DoWork().

Is this possible?

http://pastebin.com/wHrrBWKZ

Thanks,

Matt

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

庆幸我还是我 2024-12-06 06:46:00

BackgroundWorker 示例此处展示了如何做。

总之:

  • 当您创建BackgroundWorker时,设置WorkerSupportsCancellation
  • 在您的 DoWork 处理程序中,定期检查 CancellationPending。如果为 true,则将 DoWorkEventArgs.Cancel 设置为 true 并从 DoWork 返回。
  • 要取消任务,请调用 CancelAsync
  • 要检测任务是否已取消,请观察 RunWorkerCompletedEventArgs.Cancelled

要从另一个方法中执行此操作,该方法必须将 BackgroundWorker 实例和 DoWorkEventArgs 实例传递给它。

The BackgroundWorker sample here shows how to do it.

In summary:

  • When you create the BackgroundWorker, set WorkerSupportsCancellation.
  • In your DoWork handler, periodically check CancellationPending. If it is true, then set DoWorkEventArgs.Cancel to true and return from DoWork.
  • To cancel the task, call CancelAsync.
  • To detect the task has been cancelled, observe RunWorkerCompletedEventArgs.Cancelled.

To do this from within another method, that method must have the BackgroundWorker instance and the DoWorkEventArgs instance passed to it.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文