|
|
1.1 ! root 1: using System.Diagnostics; ! 2: using System.Text; ! 3: ! 4: namespace CleanFlashCommon { ! 5: public class ProcessRunner { ! 6: ! 7: public static ExitedProcess RunProcess(ProcessStartInfo startInfo) { ! 8: startInfo.RedirectStandardOutput = true; ! 9: startInfo.RedirectStandardError = true; ! 10: ! 11: StringBuilder outputBuilder = new StringBuilder(); ! 12: Process process = new Process { ! 13: StartInfo = startInfo ! 14: }; ! 15: DataReceivedEventHandler outputHandler = new DataReceivedEventHandler( ! 16: delegate (object sender, DataReceivedEventArgs e) { ! 17: outputBuilder.AppendLine(e.Data); ! 18: } ! 19: ); ! 20: ! 21: process.OutputDataReceived += outputHandler; ! 22: process.ErrorDataReceived += outputHandler; ! 23: ! 24: process.Start(); ! 25: process.BeginOutputReadLine(); ! 26: process.BeginErrorReadLine(); ! 27: process.WaitForExit(); ! 28: process.CancelOutputRead(); ! 29: process.CancelErrorRead(); ! 30: ! 31: return new ExitedProcess { ! 32: ExitCode = process.ExitCode, ! 33: Output = outputBuilder.ToString().Trim() ! 34: }; ! 35: } ! 36: ! 37: public static Process RunUnmanagedProcess(ProcessStartInfo startInfo) { ! 38: Process process = new Process { ! 39: StartInfo = startInfo ! 40: }; ! 41: process.Start(); ! 42: process.WaitForExit(); ! 43: return process; ! 44: } ! 45: } ! 46: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.