Как лучше всего ограничить количество экземпляров .NET Task?

Я создал большое количество экземпляров Task. Мне нужно запустить их все и дождаться их завершения. Проблема в том, что мне нужно убедиться, что в любой момент времени между «начато» и «завершено» находится не более X задач; задачи включают звонки другим абонентам, у которых есть ограничение на количество одновременных звонков. Поскольку эти ограничения не зависят от моего оборудования, я не могу полагаться на встроенное интеллектуальное регулирование; Мне нужно строго соблюдать лимит. Я смог сделать это, увеличив и уменьшив задачи общей переменной потокобезопасным способом, но это кажется излишне громоздким. Есть ли способ, более встроенный в API напрямую, или мне не хватает простого инструмента синхронизации?

5
задан GWLlosa 17 February 2011 в 21:27
поделиться