2012-09-10 41 views
1

在我的测试中,似乎一旦调用CancelAsyncBackgroundWorker将不再支持ProgressChanged中的ReportProgress方法。 ReportProgress执行没有例外,但ProgressChanged实际上停止任何事情。我想像的是这样的:BackgroundWorker取消同步禁用ProgressChanged?

<code> 
if (CancellationPending) return; 
</code> 

in ProgressChanged

其他人能证实或反驳这种说法吗?

虽然我可以看到它为什么看起来好像是个好主意,但它假设一旦CancelAsync被调用后,命令对象将永远不会再发出用户通知,这看起来似乎是假的。这实际上意味着你必须至少在打电话给ReportProgress之前检查是否取消,这很可靠。即使那样,我认为这对于一场比赛来说也不是万无一失的(说穿线麻木;-)。

回答

0

原来,这是我自己的代码阻止了ReportProgress的工作。咄。验证即使在调用CancelAsync并且CancellationPending设置为true之后,也会调用ReportProgress。

相关问题