我正在启动一个控制台应用程序,但是当我重定向标准输出时,我总是一无所得!process.standardoutput.ReadToEnd()总是空的?
当我不重定向它,并设置CreateNoWindow
到false
,我在控制台中正确地看到的一切,但是当我把它重定向,StandardOutput.ReadToEnd()
总是返回一个空字符串。
Process cproc = new Process();
cproc.StartInfo.CreateNoWindow = true;
cproc.StartInfo.FileName = Dest;
cproc.StartInfo.RedirectStandardOutput = true;
cproc.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
cproc.StartInfo.UseShellExecute = false;
cproc.EnableRaisingEvents = true;
cproc.Start();
cproc.Exited += new EventHandler(cproc_Exited);
while(!stop)
{
result += cproc.StandardOutput.ReadToEnd();
}
的EventHandler cproc_exited
只是设置stop
到true
。有人可以解释为什么result
总是string.Empty
?
。 我得到了一个死锁 – alex 2010-01-06 11:33:15
heey,它的工作原理!看起来像我的朋友(谁做了控制台程序)搞砸了!它将所有内容写入错误流!我得和他谈谈,也许他可以解决这个问题。感谢您的快速回答!你从我的电脑前几小时和几个小时的时间里救了我,试图寻找一个愚蠢的错误:) – alex 2010-01-06 11:44:45
@alex:取出while循环 - 它不应该在那里。理想情况下,使用不同的线程 - 一个从'StandardOutput'读取,一个从'StandardError'读取。 – 2010-01-06 11:59:51