Я хотел бы реализовать пул с заранее определенным числом (скажем, 10) асинхронных задач, выполняющихся бесконечно.
Используя Task.WhenAll , я могу легко запустить 10 задач, вставить их в список и вызвать await Task.WhenAll (list) в этом списке. Как только метод вернется, я снова смогу начать весь процесс на следующих 10 элементах. Проблема, с которой я сталкиваюсь в этом решении, заключается в том, что оно ожидает завершения самой длинной задачи перед циклом, что не является оптимальным.
Мне бы хотелось, чтобы при каждом завершении задачи запускалась новая. Тайм-аут также был бы хорош, чтобы предотвратить бесконечное выполнение задачи в случае сбоя.
Есть ли простой способ сделать это?