public InvocationResult Invoke() { if (ProcessStartBuilder == null) throw new InvalidOperationException("You must specifiy a ProcessStartBuilder or don't use an empty contructer"); var process = ProcessStartBuilder(); process.UseShellExecute = false; process.CreateNoWindow = true; process.RedirectStandardError = true; process.RedirectStandardInput = true; process.RedirectStandardOutput = true; process.WindowStyle = ProcessWindowStyle.Hidden; if (ProcessStartModifier != null) ProcessStartModifier(process); var result = new InvocationResult(); try { var proc = new System.Diagnostics.Process(); proc.StartInfo = process; proc.Start(); if (Timeout > 0) { proc.WaitForExit(Timeout); } else { proc.WaitForExit(); } if (proc.HasExited == false) if (proc.Responding) proc.CloseMainWindow(); else proc.Kill(); result.Error = proc.StandardError.ReadToEnd(); result.Output = proc.StandardOutput.ReadToEnd(); proc.Close(); } catch (Exception ex) { result.ExecutionError = ex.Message; } return result; }
public InvocationResult Invoke() { if (ProcessStartBuilder == null) { throw new InvalidOperationException("You must specifiy a ProcessStartBuilder or don't use an empty contructer"); } var process = ProcessStartBuilder(); process.UseShellExecute = false; process.CreateNoWindow = true; process.RedirectStandardError = true; process.RedirectStandardInput = true; process.RedirectStandardOutput = true; process.WindowStyle = ProcessWindowStyle.Hidden; if (ProcessStartModifier != null) { ProcessStartModifier(process); } var result = new InvocationResult(); try { var proc = new System.Diagnostics.Process(); proc.StartInfo = process; proc.Start(); if (Timeout > 0) { proc.WaitForExit(Timeout); } else { proc.WaitForExit(); } if (proc.HasExited == false) { if (proc.Responding) { proc.CloseMainWindow(); } else { proc.Kill(); } } result.Error = proc.StandardError.ReadToEnd(); result.Output = proc.StandardOutput.ReadToEnd(); proc.Close(); } catch (Exception ex) { result.ExecutionError = ex.Message; } return(result); }