public void Generate(int countProcess, GenerateInput input, string appPath, int tryCount = 60, int waitMiliSeconds = 2000) { var oldCountProcess = countProcess; var getMcnpLnPath = input.AutoResParentPath; var inputFiles = Directory.GetFiles(input.InputParentPath); var vboApp = new FileInfo(appPath); Directory.CreateDirectory(getMcnpLnPath); var processInfo = new ProcessStartInfo() { FileName = vboApp.Name, WorkingDirectory = vboApp.Directory.FullName }; var listOfProcess = new List<Process>(); var rangeOfFiles = inputFiles.Length; for (int j = 0; j < rangeOfFiles; j++) { processInfo.Arguments = "\"" + inputFiles[j] + "\""; listOfProcess.Add(Process.Start(processInfo)); Thread.Sleep(2000); if ((j + 1) == countProcess) { while (Directory.GetDirectories(getMcnpLnPath).Length != countProcess) { Thread.Sleep(waitMiliSeconds); } while (!File.Exists(Path.Combine(Directory.GetDirectories(getMcnpLnPath)[j], "mcnpIn"))) { Thread.Sleep(waitMiliSeconds); } for (int i = j; i >= j + 1 - oldCountProcess; i--) { listOfProcess[i].Kill(); } countProcess += oldCountProcess; } } }
private static void Main(string[] args) { var genInp = new GenerateInput(); var runVboApp = new RunVboApp(); Console.WriteLine("Enter full path to standart input file:"); var fullPathInput = Console.ReadLine(); Console.WriteLine("Enter full path to folder wich contains generated folders with dat files:"); var fullPathDataFolder = Console.ReadLine(); Console.WriteLine("Enter number of parallel start process:"); var processNumber = int.Parse(Console.ReadLine()); Console.WriteLine("VBO path:"); var vbo = Console.ReadLine(); if (genInp.Generate(fullPathInput, fullPathDataFolder)) runVboApp.Generate(processNumber, genInp, vbo); }