1
在我的测试中,似乎一旦调用CancelAsync
,BackgroundWorker
将不再支持ProgressChanged
中的ReportProgress
方法。 ReportProgress
执行没有例外,但ProgressChanged
实际上停止任何事情。我想像的是这样的:BackgroundWorker取消同步禁用ProgressChanged?
<code>
if (CancellationPending) return;
</code>
in ProgressChanged
。
其他人能证实或反驳这种说法吗?
虽然我可以看到它为什么看起来好像是个好主意,但它假设一旦CancelAsync
被调用后,命令对象将永远不会再发出用户通知,这看起来似乎是假的。这实际上意味着你必须至少在打电话给ReportProgress
之前检查是否取消,这很可靠。即使那样,我认为这对于一场比赛来说也不是万无一失的(说穿线麻木;-)。