我正在编写一个C#winform应用程序,它启动第二个进程来执行
shell命令,如“dir”和“ping”.我重定向第二个进程的输出,以便我的应用程序可以接收命令结果.它大致工作正常.
唯一的问题是我的winform app作为一个整体接收命令行输出而不是逐行接收.例如,它必须等待外部“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.