public static ExecuteProcessResult ExecuteProgramWithOutput(ExecuteProcessInfo info) { long timestamp = DateTime.Now.Ticks; Trace.TraceInformation("{3}: Executing {0} {1} at {2}", info.Filename, info.Arguments, info.WorkingDirectory, timestamp); var entrance = new object(); var result = new ExecuteProcessResult(); DataReceivedEventHandler dataHandler = (s, e) => { if (e.Data == null) { return; } lock (entrance) result.OutputLines.AddRange(e.Data.Split('\n')); }; result.OutputLines = new List <string>(); try { int?ti = null; if (info.Timeout != null) { ti = (int)info.Timeout.Value.TotalMilliseconds; } result.ExitCode = ProcessHelper.ExecuteAndWaitForExit(info.Filename, info.Arguments, info.WorkingDirectory, dataHandler, dataHandler, info.Username, info.Password, ti, info.EnvironmentVariables); Trace.TraceInformation("{0}: Finished with exit code {1}", timestamp, result.ExitCode); } catch (Exception e) { Trace.TraceInformation("{0}: Exception while executing program: {1}", timestamp, e.Message); result.ExitCode = 1; } return(result); }
public static ExecuteProcessResult ExecuteProgramWithOutput(ExecuteProcessInfo info) { long timestamp = DateTime.Now.Ticks; Trace.TraceInformation("{3}: Executing {0} {1} at {2}", info.Filename, info.Arguments, info.WorkingDirectory, timestamp); var entrance = new object(); var result = new ExecuteProcessResult(); DataReceivedEventHandler dataHandler = (s, e) => { if (e.Data == null) return; lock (entrance) result.OutputLines.AddRange(e.Data.Split('\n')); }; result.OutputLines = new List<string>(); try { int? ti = null; if (info.Timeout != null) ti = (int)info.Timeout.Value.TotalMilliseconds; result.ExitCode = ProcessHelper.ExecuteAndWaitForExit(info.Filename, info.Arguments, info.WorkingDirectory, dataHandler, dataHandler, info.Username, info.Password, ti, info.EnvironmentVariables); Trace.TraceInformation("{0}: Finished with exit code {1}", timestamp, result.ExitCode); } catch (Exception e) { Trace.TraceInformation("{0}: Exception while executing program: {1}", timestamp, e.Message); result.ExitCode = 1; } return result; }