循环调用外部命令的问题
测试时文件数量少没发现问题,用的时候由于处理上百万的文件,进程后来非常多,而且到最后提示无法调用的exe,请问有什么好的解决办法
C# Process
foreach (FileInfo NextFile in fileInfo)
{
runOne();
}
private void runOne()
{
string binStr = "a.exe";
string argu = " -0"
Process exep = new Process();
exep.StartInfo.FileName = binStr;
exep.StartInfo.Arguments = argu;
exep.StartInfo.CreateNoWindow = true;
exep.StartInfo.UseShellExecute = false;
exep.Start();
}
[解决办法]
进程开启太多,无法继续开启新的进程,在foreach中thread.sleep一下,sleep的时间根据进程执行时间决定
[解决办法]
做个线程池,预先生成20个线程,这样同时可进行20个命令,多了让他等待别人释放,比1个进程好点。
[解决办法]
调用前判断进程列表中a.exe是否超过20个,如果是,就sleep 100ms再判断,否则再启动新程序。