runAsync() возвращает объект типа System.Threading.Tasks.Task, у которого есть метод wait(). Так что можно логику из пункт 3 засунуть в основной класс (типа runBaseBatch), в начале исполнения заспавнить через runAsync логику из пункта 1, потом вывести диалог и потом, когда пользователь чего-то ответил, вызвать wait() для того объекта, который когда-то вернули из runAsync(). Ну и после этого запускать рассчетную логику из пункта 3.
Хотя я бы скорее batch multithreading попробовал бы использовать. Диалог запустить из класса-стартера, потом когда пользователь ответит - заспавнить три батча - один для 1, второй для той части 3, которая от 1 не зависит и третий для той части 3, которая от 1 зависит. При этом для третьего батча прописать зависимости от первых двух.
|