Я построил небольшую цепочку заданий с условными продолжениями, однако я испытываю некоторое поведение в поведении. Моя цепочка выглядит следующим образом:Непрерывное поведение задачи Продолжение:
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
Как я понял, эта цепь должна работать асинхронно (т.е. не в потоке пользовательского интерфейса), но один за другим (так LoadSettings -> CheckForUpdates -> ...).
LoadSettings -> CheckForUpdates -> Cleanup -> Exit -> Cleanup -> ... Кроме того, первая очистка вызывается с параметром Task id 1 в качестве параметра (это задание выполнено правильно раньше, правильно?), и эта задача имела статус «Отменено» (и я никогда не отменю задачу в любом месте).
Кто-нибудь знает, что здесь не так?
Редактирование: Хорошо, согласно msdn, если условие продолжения не выполняется, его задача отменяется. Поэтому ErrorHandler отменяется, но как я могу остановить целую цепочку (или уведомить о других продолжениях с очисткой и выйти из нее, которая была отменена)?