Saída de prompt de comando sendo lida como string vazia

Eu estou tentando executar comandos de prompt de comando e ler a saída em c #. Este é o meu código:

ProcessStartInfo cmdInfo = new ProcessStartInfo("cmd.exe", "/c " + command);
cmdInfo.CreateNoWindow = true;
cmdInfo.RedirectStandardOutput = true;
cmdInfo.UseShellExecute = false;

Process cmd = new Process();
cmd.StartInfo = cmdInfo;
cmd.Start();
string result = cmd.StandardOutput.ReadToEnd();
cmd.WaitForExit();
cmd.Close();
return result;

Ele funciona na maior parte do tempo, mas às vezes resulta = "" quando isso é impossível para o comando que estou usando (por exemplo, route add deve dar resultado em sucesso ou falha). Alguma ideia? Eu queria saber se talvez eu tivesse criado uma condição de corrida entre o processo e a chamada ReadToEnd?

questionAnswers(1)

yourAnswerToTheQuestion