日期:2014-05-17  浏览次数:20677 次

循环调用外部命令的问题
测试时文件数量少没发现问题,用的时候由于处理上百万的文件,进程后来非常多,而且到最后提示无法调用的exe,请问有什么好的解决办法

 
        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();

        }
C# Process

------解决方案--------------------
进程开启太多,无法继续开启新的进程,在foreach中thread.sleep一下,sleep的时间根据进程执行时间决定
------解决方案--------------------
做个线程池,预先生成20个线程,这样同时可进行20个命令,多了让他等待别人释放,比1个进程好点。
------解决方案--------------------
调用前判断进程列表中a.exe是否超过20个,如果是,就sleep 100ms再判断,否则再启动新程序。