Я пытаюсь создать службу, которая выполняет запланированные задачи асинхронным (и параллельным) способом с использованием TPL.
Основным требованием является то, что для множества различных задач, каждая со своими запланированными скоростями(некоторые будут выполняться каждую секунду, другие 30 секунд, другие 5 минут и т. д.), которые будут выполняться одновременно.И я не уверен, что лучше всего это сделать, особенно учитывая, что ConcurrentBag (который я рассматривал как держатель всех будущих задач) не содержит методов, с помощью которых можно выбирать наборы задач, которые необходимо выполнить.
Это также означает, что я не могу использовать WaitAny или WaitAll, так как эти краткосрочные задачи должны завершаться и требовать себя самостоятельно.
Как мне поступить с этим?
Редактировать:
Хорошо, в основном мой дизайн таков:
ScheduledTask, который является оберткой для Task со свойством Scheduled DateTime.Несколько из них хранятся в ConcurrentBag
Контроллере, который опрашивает ConcurrentBag (в настоящее время это просто цикл while (true), но может быть Timer или аналогичным), удаляя все запланированные, и Start ()это их.
Каждый ScheduledTask содержит ссылку на ConcurrentBag и ставит в очередь новый экземпляр самого себя, когда завершается, с новым ScheduledTime.
Этот дизайн, кажется, работает до сих пор, но есть кое-что окаждая задача содержит ссылку на ConcurrentBag, который мне не подходит.Будем благодарны за любые комментарии или предложения по дизайну.