Как отложить «горячие» задачи, чтобы они могли обрабатываться в установленном порядке
Скажем, у меня есть набор задач:
var task1 = DoThisAsync(...);
var task2 = DoThatAsync(...);
var task3 = DoOtherAsync(...);
var taskN...
Я ищу способ обработать набор задач по порядку (определяется местом, в котором содержится коллекция, скажем), но чтобы задачи запускались / запускались только тогда, когда их очередь, а не раньше, - и чтобы все это было завершено собственная задача.
Проблемные ограничения / детали:
Эти задачи должны выполняться в определенном порядке, т. Е. Задача1, задача2, ...Предыдущее задание должно выполняться асинхронно, прежде чем может начаться следующееКоличество заданий является переменнымРазличный набор задач может быть назначен каждый раз, когда выполняется кодПорядок и количество заданий известны заранее.Основная проблема заключается в том, что как только я вызываю соответствующий метод (например, DoThis () ...) для возврата каждой задачи, эта задача уже «горячая» или выполняется, что нарушает (2) выше.
Я пытался работать с .ContinueWith (..), но если я вызову каждую из задач, как указано выше, чтобы установить продолжения или добавить их в список или коллекцию, они уже запущены.
Не уверен, что Lazy <T> может помочь, но не может понять, как в настоящее время?
Надеюсь, что это имеет смысл, так как я довольно новичок в async / await / tasks.
Спасибо заранее.