In einem bestimmten Geschäftsszenario werden mehrere Aufgaben parallel ausgeführt. Ich benutze CancellationToken
, um diese Aufgaben abzubrechen, wann immer der Endbenutzer es wünscht. Ich muss auch alle Aufgaben neu starten, nachdem sie für einen bestimmten Zeitraum ausgeführt wurden, sagen wir 3 Stunden. Dafür verwende ich:So erfahren Sie, ob eine Aufgabe abgebrochen wurde oder die Wartezeit abgelaufen ist
_cts.CancelAfter(TimeSpan.FromHours(3))
Das funktioniert gut. Wenn jedoch 3 Stunden vergangen sind, werden die Aufgaben automatisch abgebrochen und kommen wieder heraus. Daher bin ich nicht in der Lage, die beiden Szenarien getrennt zu erkennen, nämlich: War die Stornierung fällig, weil der Benutzer stornieren wollte oder weil 3 Stunden abgelaufen waren.
Ich bin bewusst, dass wir eine Datetime
Variable mit der letzten Laufzeit und schieben Sie diese in unserer Aufgabe verwenden können. Wir können dann die Aufgabe auf der Grundlage der aktuellen Zeitdifferenz und des letzten Durchlaufs beenden. Aber ich habe mehr darüber nachgedacht, wie TPL dabei helfen kann.
Thx. Das hilft. – Kallol