【问题标题】:Backgroundworker doesn't stop [duplicate]Backgroundworker不会停止[重复]
【发布时间】:2014-06-07 11:04:39
【问题描述】:

DoWork 是这样的:

        DoLengthyWork();

        //this is never executed
        if(bgWorker.CancellationPending)
        {
            MessageBox.Show("Up to here? ...");
            e.Cancel = true;
        }

我用 bgWorker.CancelAsync() 触发取消;

如果 bgWorker.CancellationPending 因为被 DoLengthyWork 阻止而无法访问,我该如何停止 BackGround Worker?

【问题讨论】:

  • 您需要在您的DoLengthyWork() 中获取bgWorker.CancelAsync() 触发器,以便您可以创建一个安全的方法来取消挂起的作业。 .NET 不会为您取消作业,它只会通过CancellationPending 属性设置取消。
  • @Yuval,该线程所做的只是解释为什么我的问题无法解决。不管怎么说,还是要谢谢你 ! ;)
  • 它解释了必须做什么.. :)

标签: c# .net asynchronous backgroundworker


【解决方案1】:

您的问题是您的DoWork 函数的执行永远不会达到CancellationPending 条件。事实上,正如balexandre所说,你应该知道组织DoLengthyWork场景定期检查CancellationPending里面的条件。

【讨论】:

  • 如果您完整阅读我的问题,您会注意到我知道我的问题是什么!
猜你喜欢
  • 2022-08-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-03-21
  • 1970-01-01
相关资源
最近更新 更多