Я работаю над очередью с именами файлов. Каждый файл должен обрабатываться внешним двоичным файлом. Это нормально работает, но обрабатывает только один файл за раз. Возможно ли, чтобы два порождали несколько процессов параллельно?
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 для обновления базы данных.