public CWrapper(string executable, WrapperSettings settings, BufferHandler bufferHandler) { Settings = settings ?? throw new ArgumentNullException(nameof(settings)); _bufferHandler = bufferHandler; Executable = executable; Settings.Lock(); ProcessStartInfo startInfo = new ProcessStartInfo() { FileName = Executable, UseShellExecute = false, CreateNoWindow = !Settings.ShowWindow, RedirectStandardError = Settings.RedirectStandardError, RedirectStandardInput = Settings.RedirectStandardInput, RedirectStandardOutput = Settings.RedirectStandardOutput, StandardOutputEncoding = Settings.EncodingSettings.StandardOutputEncoding, StandardErrorEncoding = Settings.EncodingSettings.StandardErrorEncoding, WorkingDirectory = Settings.WorkingDirectory }; _wrappedProcess = new Process { StartInfo = startInfo, EnableRaisingEvents = true }; _wrappedProcess.OutputDataReceived += (s, e) => { OutputDataReceived?.Invoke(s, e); if (_bufferHandler != null) { _bufferHandler.OutputDataWriter.WriteLine(e.Data); } OutputDataMRE.Set(); }; _wrappedProcess.ErrorDataReceived += (s, e) => { ErrorDataReceived?.Invoke(s, e); if (_bufferHandler != null) { _bufferHandler.ErrorDataWriter.WriteLine(e.Data); } ErrorDataMRE.Set(); }; _wrappedProcess.Exited += (s, e) => { Executing = false; Exited?.Invoke(s, DateTime.Now); ExitedMRE.Set(); }; }
public CWrapper(string executable, WrapperSettings settings) : this(executable, settings, null) { }