Trying to use Process class and it's async features. Couldn't figure out how to read all output from Process before the program exits. Please help!!
Here's my code,
void RunProcess()
{
  Process process = new Process
  {
      StartInfo = new ProcessStartInfo
      {
          FileName = CmdName,
          Arguments = CmdArgs,
          CreateNoWindow = true,
          WindowStyle = ProcessWindowStyle.Hidden,
          RedirectStandardOutput = true,
          RedirectStandardError = true,
          UseShellExecute = false
      }
  };
  using(process)
  {
      process.OutputDataReceived += Process_OutputDataReceived;
      process.Start();
      process.BeginOutputReadLine();
      process.WaitForExit(); // Even waiting for exit here.
      _logger.Debug("End of process");
  }
} // void RunProcess()
void Process_OutputDataReceived(object sender, DataReceivedEventArgs e)
{
  if (!String.IsNullOrEmpty(e.Data))
      _logger.Debug($"\t{e.Data}");
}
I have a other code that runs for at least another 30 - 45 secs after RunProcess() method is called and done, but don't see the output from my process anywhere in the logs.
If I run the program synchronously, I get all the output. But see no output when run async. Does anyone know what I am doing wrong, please?
(Updating question to make it more clear!)
The code I posted above works, and is minimal ( stripped out validations, classes, etc). I am looking for suggestions on how to make my program stop until full output is captured in log files. Does anyone know if there is a way to make it happen with the combination of WaitForExit and event call like I have in code above, please? It seems the process is completing first and terminating the event handler before it could print the log lines. 
Many Thanks in advance!!
 
    