So verzögern Sie "heiße" Aufgaben, damit sie in einer festgelegten Reihenfolge verarbeitet werden können

Sag ich habe eine Reihe von Aufgaben:

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

Ich suche nach einer Möglichkeit, eine Reihe von Aufgaben in der angegebenen Reihenfolge zu verarbeiten (bestimmt durch den Ort, an dem die Auflistung beispielsweise enthalten ist), aber die Aufgaben erst dann auszuführen / zu starten, wenn sie an der Reihe sind, und nicht vorher - und all das ist abgeschlossen seine eigene Aufgabe.

Problem Einschränkungen / Details sind:

Diese Aufgaben müssen in einer bestimmten Reihenfolge ausgeführt werden, d. H. Aufgabe1, Aufgabe2, ... Die vorherige Task muss asynchron abgeschlossen sein, bevor die nächste gestartet werden kann Die Anzahl der Aufgaben ist variabelJedes Mal, wenn der Code ausgeführt wird, kann eine andere Gruppe von Aufgaben benannt werden Die Reihenfolge und Anzahl der Aufgaben ist im Voraus bekannt.

Das Hauptproblem besteht darin, dass, sobald ich die entsprechende Methode (wie DoThis () ...) aufrufe, um jede Aufgabe zurückzugeben, diese Aufgabe bereits "heiß" ist oder ausgeführt wird, was gegen (2) oben verstößt.

Ich habe versucht, mit.ContinueWith (..) zu arbeiten, aber wenn ich die oben genannten Aufgaben aufrufe, um die Fortsetzungen festzulegen oder einer Liste oder Sammlung hinzuzufügen, haben sie bereits begonnen.

Nicht sicher, ob Lazy <T> vielleicht hilft, aber wie sieht es derzeit aus?

Hoffentlich macht das Sinn, da ich noch nicht mit async / await / tasks vertraut bin.

Vielen Dank im Voraus

Antworten auf die Frage(4)

Ihre Antwort auf die Frage