Вы хотите,
Process p = new Process();
p.StartInfo.FileName = "myProgram.exe";
p.StartInfo.Arguments = " < parameter list here > ";
p.Start();
p.WaitForExit();
, что происходит в вашем коде, это когда вы запускаете процесс и закрываете его сразу же, то, что вам нужно, это вызывать WaitForExit (), который фактически ожидает завершения процесса на своемсобственный,
Чтобы напечатать вывод перед закрытием приложения:
Process p = new Process();
p.StartInfo.FileName = "myProgram.exe";
p.StartInfo.Arguments = " < parameter list here > ";
p.StartInfo.UseShellExecute = false;
p.StartInfo.RedirectStandardOutput = true;
p.Start();
p.WaitForExit();
Console.WriteLine(p.StandardOutput.ReadToEnd());