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ć?