1
在我的測試中,似乎一旦調用CancelAsync
,BackgroundWorker
將不再支持ProgressChanged
中的ReportProgress
方法。 ReportProgress
執行沒有例外,但ProgressChanged
實際上停止任何事情。我想像的是這樣的:BackgroundWorker取消同步禁用ProgressChanged?
<code>
if (CancellationPending) return;
</code>
in ProgressChanged
。
其他人能證實或反駁這種說法嗎?
雖然我可以看到它爲什麼看起來好像是個好主意,但它假設一旦CancelAsync
被調用後,命令對象將永遠不會再發出用戶通知,這看起來似乎是假的。這實際上意味着你必須至少在打電話給ReportProgress
之前檢查是否取消,這很可靠。即使那樣,我認爲這對於一場比賽來說也不是萬無一失的(說穿線麻木;-)。