ThreadPool требует глобальной установки SetMaxThreads. А есть что-то, где можно инстанционально задать максимум одновременных потоков? Столько этих NuGet-пакетов уже наделали, наверняка что-то есть.
В общем, задача такая:
1. Ставите в очередь задания (1000 штук, к примеру, ждут в очереди и вы добавляете 1001).
2. Из очереди как-то достаются задания с лимитом в 7 штук (задаете), т.к. 1000 штук одновременно — не гуд. Остальные так и ждут в очереди.
3. Когда 1 из 7 завершило работу — запускается новое.
Ну и, желательно, возможность остановить обработку и пр. плюшки.
Что есть?
Ну и чтоб 2 раза не вставать. Еще нужно чтобы добавлялось в очередь с некой периодичностью (к примеру, проверка нужна раз в 5 минут, т.к. чаще — смысла нет). Если успех — удаляем из очереди. Иначе — ждет повторного вызова. Опять же — только n потоков, остальные ждут, даже если время проверки подошло.