Exemplo n.º 1
0
        /// <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));
        }
Exemplo n.º 2
0
        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);
        }