次のコードがあります。
ProcessStartInfo si = new ProcessStartInfo("cmd.exe");
si.RedirectStandardInput = true;
si.RedirectStandardOutput = true;
si.UseShellExecute = false;
si.WindowStyle = ProcessWindowStyle.Hidden;
si.CreateNoWindow = true;
Process p = Process.Start(si);
p.StandardInput.Write("ipconfig");
p.StandardInput.Write("exit");
string consoleOutput = p.StandardOutput.ReadToEnd();
string dir="here";
実行は "string consoleOutput" に到達しますが、"string dir" には到達しません。つまり、コードは StandardOutput の読み取りでスタックします。これにより違いが生じる場合は、コンソール アプリケーション内から実行されます。