Chcę napisać program, który będzie swego rodzaju emulatorem terminala. Wywołuję proces "cmd.exe /K", staram się z niego odczytywać wyjście/pisać na wejście i zapisywać je przy pomocy Stream Readera i Writera. Sprawa ma się tak, że jeśli mam w kodzie tylko StreamReader (SW zakomentowany), to jest OK, natomiast jeśli również StreamWriter, to przeszkadzają one sobie nawzajem i po próbie odczytania wyjścia z konsoli wszystko wisi. :/ Dlaczego tak się dzieje? Proszę o podpowiedzi i sugestie dotyczące rozwiązania mojego problemu.
public WinConsole()
{
psi = new ProcessStartInfo("cmd.exe");
psi.Arguments = "/K";
psi.WindowStyle = ProcessWindowStyle.Normal;
psi.UseShellExecute = false;
psi.RedirectStandardOutput = true;
psi.RedirectStandardInput = true;
consoleProcess = Process.Start(psi);
sr = consoleProcess.StandardOutput;
sw = consoleProcess.StandardInput;
sw.AutoFlush = true;
}
public string ReadFromConsole()
{
string tmp = sr.ReadToEnd();
return tmp;
}
public void WriteToConsole(string command)
{
sw.WriteLine(command);
}