В конкретном бизнес-сценарии параллельно выполняется несколько задач. Я использую CancellationToken
для отмены этих задач всякий раз, когда пожелает конечный пользователь. Мне также нужно перезапустить все задачи после их запуска в течение определенного периода времени, скажем, 3 часа. Для этого я использую:Как узнать, была ли задача отменена или период ожидания превышает
_cts.CancelAfter(TimeSpan.FromHours(3))
Это прекрасно работает. Однако, когда 3 часа, задачи автоматически отменяются и выходят. Следовательно, я не могу определить два сценария отдельно, а именно: было ли аннулирование из-за того, что пользователь отказался или потому, что было 3 часа.
Я знаю, что мы можем использовать переменную Datetime
, содержащую последнее время выполнения, и нажимать это внутри нашей задачи. Затем мы можем завершить задачу на основе текущей разницы во времени и в последний раз. Но я больше смотрел, как TPL может помочь решить эту проблему.
Thx. Это помогает. – Kallol