Como atrasar tarefas "quentes" para que elas possam ser processadas em uma ordem definida

Digamos que eu tenha um conjunto de tarefas:

        var task1 = DoThisAsync(...);
        var task2 = DoThatAsync(...);
        var task3 = DoOtherAsync(...);
        var taskN...

Estou procurando uma maneira de processar um conjunto de tarefas em ordem (determinada pelo local em conter a coleção, por exemplo), mas ter as tarefas apenas executadas / iniciadas quando for a sua vez e não antes - e ter tudo isso embrulhado em sua própria tarefa.

As restrições / detalhes do problema são:

Essas tarefas precisam ser executadas em uma determinada ordem, como tarefa1, tarefa2, ...A tarefa anterior deve ser concluída de forma assíncrona antes que a próxima possa iniciarO número de tarefas é variávelUm conjunto diferente de tarefas pode ser indicado cada vez que o código é executadoA ordem e o número de tarefas são conhecidos antecipadamente.

O principal problema é que, assim que chamo o método relevante (como DoThis () ...) para retornar cada tarefa, essa tarefa já está "quente" ou em execução, violando (2) acima.

Tentei trabalhar com .ContinueWith (..), mas se eu chamar cada uma das tarefas acima para definir as continuações ou adicioná-las a uma lista ou coleção que elas já foram iniciadas.

Não tem certeza se o Lazy <T> pode ajudar, mas não consegue ver como no momento?

Espero que isso faça sentido, pois sou bastante novo em assíncrono / espera / tarefas.

Muito obrigado antecipadamente.

questionAnswers(2)

yourAnswerToTheQuestion