在我的主线程中,我运行了Backgroundworker。他的todo工作是从主线程调用“方法”的方法。当我想取消我的后台工作时它会停止运行但是在mainthread上调用的“方法”仍会运行导致问题的原因。知道怎么解决吗?
答案 0 :(得分:1)
除了检查CancellationPending
之外,还需要在Cancel
参数上设置DoWorkEventArgs
属性。
然后,在RunWorkerCompleted
事件中,您可以查询RunWorkerCompletedEventArgs
的{{1}}属性,该属性将反映您在Cancelled
中设置的值。
现在您可能会问为什么只要外部取消操作,DoWorkEventArgs
就不会自行设置这些属性。原因是它不知道您的DoWorkEventArgs是否实际检查它是否被取消。 BackgroundWorker
本可以错过并成功完成。这很重要,因为它可能会导致副作用(如数据库更新),您可能需要知道它是否实际完成。
答案 1 :(得分:0)
MSDN请注意,您必须在Method
内检查CancellationPending
(你这样做吗?)