Доброе время суток, господа.
Мне необходимо вручную реализовать очередь потоков на C# с использованием BackgroundWorker. Суть идеи такова: есть главный поток (назовем его управляющим), внутри которого расположен бесконечный цикл, создающий потоки (также реализуемые при помощи BackgroundWorker) по мере необходимости. Для простоты имеет два "этапа" работ, и по завершении всех потоков для первого этапа необходимо начинать потоки для второго. Одновременно могут выполняться, скажем, не более 10 потоков. При завершении одного из этого десятка нужно сразу же запустить еще, дабы их количество пребывало постоянно, пока не исчерпаются индексы в списке (пусть это будет List<String>), с которым эти потоки работают. Естественно, существует некая переменная i, которая передается как аргумент в RunWorkerAsync для текущего создаваемого потока и представляет из себя индекс в вышеупомянутом списке.
Моя реализация содержит ошибку, которую я не могу исправить и которая приводит к тому, что переход ко второму "этапу" работ не происходит. При необходимости — выложу.
Подскажите идеи по реализации данной очереди. Заранее благодарен.