运行此代码:
Process p = new Process();
p.StartInfo.UseShellExecute = false;
p.StartInfo.FileName = "tool.exe";
p.Start();
p.WaitForExit();
使tool.exe运行,并在标准输出上输出一些内容。但是,如果我尝试使用以下方法捕获内容:
Process p = new Process();
p.StartInfo.UseShellExecute = false;
p.StartInfo.RedirectStandardOutput = true;
p.StartInfo.CreateNoWindow = true;
p.StartInfo.FileName = "tool.exe";
p.Start();
string output = p.StandardOutput.ReadToEnd();
p.WaitForExit();
Console.WriteLine(output);
Console.ReadLine();
然后没有输出,即我的变量“output”总是空的。
我已经确认tool.exe确实输出到标准输出(而不是标准错误)。
任何人都知道发生了什么?这里开始感到愚蠢,因为它似乎是一本真正的教科书示例...
答案 0 :(得分:0)
p.OutputDataReceived += new DataReceivedEventHandler
(
delegate(object sender, DataReceivedEventArgs e)
{
using (StreamReader output = p.StandardOutput)
{
retMessage = output.ReadToEnd();
}
}
);
试试这个:)