Мне нужно обработать 100 единиц информации через внешнюю программу.Эти процессы могут быть интенсивными, поэтому мне нужно ограничить их обработкой 8 за раз.По сути, я хотел бы запустить 8 процессов, а после завершения каждого из них запустить следующий.
Я пытался использовать TPL в System.Threading.Tasks.Dataflow с приведенным ниже кодом, но все 100запуск, а не только 8 за раз.
// This file has the command line parameters to launch the external process
List<string> lines = File.ReadAllLines(file).ToList();
var block = new ActionBlock<string>(async job => await RunJob(job), new ExecutionDataflowBlockOptions { MaxDegreeOfParallelism = 1 });
foreach (string line in lines)
{
block.SendAsync(line);
}
static async Task RunJob(string parms)
{
//Console.WriteLine("PARMS: {0}", parms);
Process proc = new Process();
ProcessStartInfo start = new ProcessStartInfo();
start.WindowStyle = ProcessWindowStyle.Normal;
start.FileName = @"C:\program.exe";
string parameters = String.Format(parms.ToString());
start.Arguments = parameters;
start.UseShellExecute = true;
proc.StartInfo = start;
proc.Start();
}
Что я пропустил?Спасибо за помощь.