Создавать процессы, но только 5 за раз

Я работаю над очередью с именами файлов. Каждый файл должен обрабатываться внешним двоичным файлом. Это нормально работает, но обрабатывает только один файл за раз. Возможно ли, чтобы два порождали несколько процессов параллельно?

Queue<string> queue = new Queue<string>();
queue.Enqueue("1.mp3");
queue.Enqueue("2.mp3");
queue.Enqueue("3.mp3");
...
queue.Enqueue("10000.mp3");

while (queue.Count > 0)
{
    string file = queue.Dequeue();

    Process p = new Process();    
    p.StartInfo.FileName = @"binary.exe";
    p.StartInfo.Arguments = file;
    p.StartInfo.UseShellExecute = false;
    p.StartInfo.CreateNoWindow = true;
    p.StartInfo.RedirectStandardOutput = true;
    p.Start();
    p.WaitForExit();
}

Обновление: мне нравится решение от Alex LE (порождение процессов, но только 5 за раз), но можно ли дождаться завершения дочерних процессов, как предлагает Бен Фойгт?

Редактировать 1: мне нужно проверить стр. ExitCode == 0 для обновления базы данных.

6
задан Makabra 7 December 2010 в 14:31
поделиться