我建立了一个带有条件延续的小任务链,但是我遇到了一些奇怪的行为。我的链看起来像这样:
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 -> Cleanup -> Exit -> Cleanup -> ...此外,第一个 Cleanup 以 Task id 1 作为参数调用(这是之前执行的任务,对吗?)并且此任务的状态为已取消(我从不在任何地方取消任务)。
有谁知道这里出了什么问题?
编辑:好的,根据 msdn,如果不满足继续的条件,则其任务将被取消。所以 ErrorHandler 被取消了,但是我怎样才能停止整个链(或通过清理和退出通知其他延续它已被取消)?