Przekierowanie wejścia i wyjścia w konsoli

0

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);
}

1 użytkowników online, w tym zalogowanych: 0, gości: 1