示例#1
0
        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);
        }
示例#2
0
 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;
 }