我需要为指定目录中的每个 PDF 文件运行一个外部程序。
问题是——如何将外部程序进程的数量限制为用户指定的值?我在循环中运行它,如下所示:
foreach(string file in Directory.GetFiles(sourcePath))
{
Process p = new Process();
p.StartInfo.FileName = @"path\program.exe";
p.StartInfo.Arguments = previouslySetArguments;
p.Start();
}
现在的问题是,有时文件数量非常庞大,并且使用该代码,所有进程将同时运行。它确实减慢了机器速度。
另一个想法是放在p.WaitForExit();
之后,p.Start();
但它一次只运行一个进程,另一方面 - 减慢整个工作:)
限制进程数量以同时运行确切数量的最简单方法是什么?我想让用户决定。
假设我想一次运行最多 5 个进程。所以:
- 对于目录中的前 5 个文件,前 5 个进程或多或少同时开始
- 当其中一个(没关系,哪个)结束工作时,下一个进程开始 - 对于下一个文件