/// <summary> /// Creates a collection of processes to be executed. /// </summary> /// <param name="concurrentDataReceiver"><see cref="ConcurrentDataReceiver"/> to handle process output.</param> /// <returns>Created collection of processes.</returns> public ReadOnlyCollection <Process> CreateProcesses(ConcurrentDataReceiver concurrentDataReceiver = null) { if (disposed) { throw new ObjectDisposedException(nameof(ProcessCreator)); } DisposeProcesses(); processList.Clear(); foreach (string arguments in Arguments) { var process = CreateProcess(arguments, concurrentDataReceiver); processList.Add(process); } return(new ReadOnlyCollection <Process>(processList)); }
private Process CreateProcess(string arguments, ConcurrentDataReceiver concurrentDataReceiver) { var process = new Process(); process.StartInfo.FileName = Filename; process.StartInfo.Arguments = arguments; process.StartInfo.UseShellExecute = false; process.StartInfo.WindowStyle = ShowWindow ? ProcessWindowStyle.Normal : ProcessWindowStyle.Hidden; process.StartInfo.CreateNoWindow = !ShowWindow; if (concurrentDataReceiver != null) { process.OutputDataReceived += concurrentDataReceiver.AddToOutput; process.ErrorDataReceived += concurrentDataReceiver.AddToError; process.StartInfo.RedirectStandardOutput = true; process.StartInfo.RedirectStandardError = true; } process.EnableRaisingEvents = true; return(process); }