Я пишу приложение Winform на C #, которое запускает второй процесс для выполнения команд оболочки, таких как «dir» и «ping».Я перенаправляю вывод второго процесса, чтобы мое приложение могло получить результат команды.Это примерно работает нормально.
Единственная проблема - мое приложение winform получает вывод командной строки целиком, а не построчно.Например, он должен дождаться завершения внешней команды ping (которая занимает много секунд или дольше), а затем сразу получить весь вывод (много строк).
То, что я хочу, - это приложение получаетвывод cmdline в режиме реального времени, т.е. по строкам, а не по блокам.Это выполнимо?
Я использую этот код для чтения вывода: while ((result = proc.StandardOutput.ReadLine ())! = Null)
Но это не работаетЯ ожидал.Заранее спасибо.
РЕДАКТИРОВАТЬ: вот код, который я использую:
System.Diagnostics.ProcessStartInfo procStartInfo = new
System.Diagnostics.ProcessStartInfo("cmd", "/c " + command);
procStartInfo.WindowStyle = ProcessWindowStyle.Hidden;
// The following commands are needed to redirect the standard output.
procStartInfo.RedirectStandardOutput = true;
procStartInfo.UseShellExecute = false;
procStartInfo.CreateNoWindow = true;
// Now we create a process, assign its ProcessStartInfo and start it
System.Diagnostics.Process proc = new System.Diagnostics.Process();
proc.StartInfo = procStartInfo;
proc.Start();
// Get the output into a string
string result;
try {
while ((result = proc.StandardOutput.ReadLine()) != null)
{
AppendRtfText(result+"\n", Brushes.Black);
}
} // here I expect it to update the text box line by line in real time
// but it does not.