У меня есть некоторый графический интерфейс для нескольких запросов LINQ.Выполнение запросов занимает некоторое время, поэтому я хотел бы, чтобы графический интерфейс реагировал и отображал индикаторы занятости и индикаторы выполнения.Многие запросы должны проверять определенные условия, существующие в данных.Если запрос возвращает пустой результат, приложение должно продолжить выполнение следующего запроса.Если он возвращает результат, возвращаемый набор будет иметь серьезность «предупреждения» или «ошибки».Если это предупреждения, исполнение должно продолжаться.Если это ошибки, он должен остановиться.
Большая часть кода играет в "пинг-понг" с пулом потоков и графическим интерфейсом.Квази-код:
TaskFactory.StartNew(()=>
{
Run in background
}.ContinueInGui(()=>
{
Update something
}).ContinueInBackground(()=>
{
Do more work;
}).ContinueInGui(()=> etc etc
Это аккуратно и красиво.Тем не менее, я не вижу, как я могу вставить условия, чтобы идти по другим маршрутам продолжения или разорвать цепочку продолжения, если в данных обнаружены ошибки.
Не существует метода для ContinueWithIf ( предикат , делегат {}, TaskScheduler) Я использую TaskCancellation, я выбрасываю исключение?Или есть какой-то простой механизм ветвления, о котором я не думаю?