我用條件延續構建了一個小型任務鏈,但是我遇到了一些有害的行爲。 我的鏈條是這樣的:任務繼續奇怪的行爲
LoadSettings (OnlyOnFaulted)-> ErrorHandler (none)-> Cleanup (none)-> Exit
| (OnlyOnRanToCompletion)
CheckForUpdates (OnlyOnFaulted)-> ErrorHandler (none)-> Cleanup (none)-> Exit
| (OnlyOnRanToCompletion)
Update (OnlyOnFaulted)-> ErrorHandler (none)-> Cleanup (none)-> Exit
| (OnlyOnRanToCompletion)
Cleanup (OnlyOnFaulted)-> ErrorHandler (none)-> Exit
| (OnlyOnRanToCompletion)
Exit
當我明白這個鏈應該異步地運行(即不是在UI線程),但一個又一個的(所以LoadSettings - > CheckForUpdates - > ...)。
然而,我得到這種行爲:
LoadSettings - > CheckForUpdates - >清理 - >退出 - >清理 - > ... 此外,第一個清理被調用與任務id 1作爲參數(這是任務執行權之前,對嗎?),並且此任務的狀態爲已取消(並且我從不在任何地方取消任務)。
有誰知道這裏發生了什麼問題?
編輯:好吧,根據msdn,如果延續條件不滿足,它的任務會被取消。所以ErrorHandler被取消了,但是我怎樣才能停止整個鏈(或者通過清理和退出來通知其他的繼續它已經被取消)?