private void ProcessOnErrorDataReceived(object sender, DataReceivedEventArgs e)
 {
     if (e.Data == null)
     {
         // ReSharper disable once AccessToDisposedClosure
         ErrorWaitHandle.Set();
     }
     else
     {
         ConsoleErrorBuilder.AppendLine(e.Data);
     }
 }
            public void Dispose()
            {
                _process.OutputDataReceived -= ProcessOnOutputDataReceived;
                _process.ErrorDataReceived  -= ProcessOnErrorDataReceived;

                OutputWaitHandle.Dispose();
                ErrorWaitHandle.Dispose();

                if (!_process.HasExited)
                {
                    KillProcess();
                }
            }