Witam.
Piszę program który wykonywał polecenia w cmd i wypisywał po każdym wynik, na początku za każdym poleceniem tworzyłem nowy Process cmd i dawałem mu w argumencie /c i komendy jakie ma wykonać. Nie było to jednak zbyt dobre gdyż jak np. użyło się polecenia cd C:/ to powinno w następnym poleceniu o tym pamiętać. Mam teraz taki kod:
ProcessStartInfo psi = new ProcessStartInfo();
psi.RedirectStandardOutput = true;
psi.RedirectStandardInput = true;
psi.FileName = "cmd.exe";
psi.UseShellExecute = false;
using (Process p = Process.Start(psi))
{
p.StandardInput.WriteLine(komenda); // komenda to string komenda do wykonania
p.StandardInput.Flush();
string output = p.StandardOutput.ReadToEnd();
}
Niestety metoda p.StandardOutput.ReadToEnd(); blokuje cały wątek i nigdy nie zwraca wyniku, wcześniej działała dobrze. Wiecie może co powinieniem zmienić?