C#截取CMD输出流的问题

AndyXuq 2011-07-15 12:01:11
RT,截取CMD的输出流,并显示在自己的一个richtextbox中,
关键读取流数据部分代码如下:
String cmdline = "ping 10.196.12.1 -t";
Proc.StandardInput.WriteLine(cmdline);

StreamReader Reader = Proc.StandardOutput;
//string output = Reader.ReadLine();
string output;
while (!Reader.EndOfStream)
{
Application.DoEvents();
output = Reader.ReadLine();
this.richTextBox1.AppendText(output+"\n");
this.richTextBox1.ScrollToCaret();
//Reader.BaseStream.Flush();
}
Proc.StandardInput.WriteLine("exit");
现在问题来了,如果此处的CMD命令不是ping 10.196.12.1 -t , 而是其他命令,在这个命令执行过程中,CMD有一段时间暂时无输出,那么WHILE循环是不是在CMD暂时无输出的时候就退出了呢?


求各位高人简答,小弟新手...
...全文
206 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
JonnySun 2011-07-15
  • 打赏
  • 举报
回复
是不是可以這樣:
while(true)

接收cmd輸入exit作為條件終斷while.
threenewbee 2011-07-15
  • 打赏
  • 举报
回复
不是。

在程序结束以后(程序进程中止)才退出。
bloodish 2011-07-15
  • 打赏
  • 举报
回复
通过OutputDataReceived来获取Process输出,不要用while

Process proc = new Process();
proc.StartInfo.RedirectStandardOutput = true;
proc.OutputDataReceived += (s, e) =>
{
Console.WriteLine(e.Data);
};
proc.Start();
proc.BeginOutputReadLine();
白鸽 2011-07-15
  • 打赏
  • 举报
回复
学习,还没玩过!!

110,533

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧