gpt4 book ai didi

C#:逐行获取外部shell命令结果

转载 作者:太空狗 更新时间:2023-10-29 23:10:22 26 4
gpt4 key购买 nike

我正在编写一个 C# winform 应用程序,它启动第二个进程来执行 shell 命令,如“dir”和“ping”。我重定向第二个进程的输出,以便我的应用程序可以接收命令结果。它大致工作正常。

唯一的问题是我的 winform 应用程序将命令行输出作为一个整体而不是逐行接收。例如,它必须等待外部“ping”命令完成(这需要很多秒或更长时间),然后立即接收整个输出(多行)。

我想要的是应用程序实时接收 cmdline 输出,即按行而不是按 block 。这可行吗?

我正在使用这段代码来读取输出: 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.

最佳答案

查看 this msdn article 中的示例关于如何完全异步地进行阅读。

除此之外,我希望您的代码现在可以逐行读取,但 UI 没有任何时间重新绘制(缺少 Application.DoEvents();在更新 RTFTextBox 之后

关于C#:逐行获取外部shell命令结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7121640/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com