private Process StartProcess(ProcessRunSettings settings, StringBuilder errorsBuilder) { var process = new Process { StartInfo = { FileName = m_executablePath, Arguments = settings.Arguments, UseShellExecute = false, RedirectStandardInput = true, RedirectStandardOutput = true, StandardOutputEncoding = Encoding.UTF8, RedirectStandardError = true, WorkingDirectory = m_defaultWorkingDirectory, CreateNoWindow = true, }, }; process.ErrorDataReceived += (sender, e) => errorsBuilder.Append(e.Data); // start process process.Start(); // read asynchronously from the error stream process.BeginErrorReadLine(); return(process); }
public ExternalProcessResults Run(ProcessRunSettings settings) { StringBuilder errors = new StringBuilder(); using (var process = StartProcess(settings, errors)) { // wait for process to end (must read all output first) var output = process.StandardOutput.ReadToEnd(); process.WaitForExit(); // return errors and process output return new ExternalProcessResults(output, errors.ToString(), process.ExitCode); } }
public ExternalProcessResults Run(ProcessRunSettings settings) { StringBuilder errors = new StringBuilder(); using var process = StartProcess(settings, errors); // wait for process to end (must read all output first) var output = process.StandardOutput.ReadToEnd(); process.WaitForExit(); // return errors and process output return(new ExternalProcessResults(output, errors.ToString(), process.ExitCode)); }
private Process StartProcess(ProcessRunSettings settings, StringBuilder errorsBuilder) { var process = new Process { StartInfo = { FileName = m_executablePath, Arguments = settings.Arguments, UseShellExecute = false, RedirectStandardInput = true, RedirectStandardOutput = true, StandardOutputEncoding = Encoding.UTF8, RedirectStandardError = true, WorkingDirectory = m_defaultWorkingDirectory, CreateNoWindow = true, }, }; process.ErrorDataReceived += (sender, e) => errorsBuilder.Append(e.Data); // start process process.Start(); // read asynchronously from the error stream process.BeginErrorReadLine(); return process; }
public ExternalProcessResults Run(ProcessRunSettings settings) { StringBuilder errors = new StringBuilder(); using (Process process = StartProcess(settings, errors)) { // wait for process to end (must read all output first) string output = null; if (settings.StandardOutputStream == null) output = process.StandardOutput.ReadToEnd(); else process.StandardOutput.BaseStream.CopyTo(settings.StandardOutputStream); process.WaitForExit(); // return errors and process output return new ExternalProcessResults(output, errors.ToString(), process.ExitCode); } }
private Process StartProcess(ProcessRunSettings settings, StringBuilder errorsBuilder, params string[] env) { Process process = new Process { StartInfo = { FileName = m_executablePath, Arguments = settings.Arguments, UseShellExecute = false, RedirectStandardInput = true, RedirectStandardOutput = true, StandardOutputEncoding = Encoding.UTF8, RedirectStandardError = true, WorkingDirectory = m_defaultWorkingDirectory, CreateNoWindow = true, }, }; if (settings.EnvironmentModifier != null) settings.EnvironmentModifier(process.StartInfo.EnvironmentVariables); // add additional environment variables for (int n = 0; n < env.Length; n += 2) process.StartInfo.EnvironmentVariables[env[n]] = env[n + 1]; process.ErrorDataReceived += (sender, e) => errorsBuilder.Append(e.Data); // start process process.Start(); // read asynchronously from the error stream process.BeginErrorReadLine(); return process; }