在我的测试中,似乎在调用CancelAsync
后,BackgroundWorker
将不再遵守ReportProgress
中的ProgressChanged
方法。 ReportProgress
执行时没有异常,但ProgressChanged
停止实际执行任何操作。我想象的是:
<code>
if (CancellationPending) return;
</code>
ProgressChanged
中的。
其他人可以确认或反驳这种说法吗?
虽然我可以看出为什么它似乎是一个好主意,但它假设命令对象在调用CancelAsync
后永远不会再做任何用户通知,这似乎是假的。它实际上也意味着您必须至少在致电ReportProgress
之前检查取消,这是非常笨拙的。即便如此,我认为它不会对一场比赛万无一失(说穿线的numbskull ;-)。
答案 0 :(得分:0)
事实证明,这是我自己的代码阻止了ReportProgress的工作。咄。验证即使在调用CancelAsync并且CancellationPending设置为true后调用ReportProgress。