为什么流读取器不会读取标准错误流?

时间:2011-09-19 22:14:27

标签: c#

所以,我得到了一些关于调试代码的建议,但是我的调试尝试已经引发了更多的错误。我有所有正确的用法,但这是我的问题:

Process p = new Process();
p.StartInfo.FileName = "javac";
Directory.CreateDirectory(System.IO.Path.Combine(Application.StartupPath + @"\TempJavaalfgwaepfgawe"));
p.StartInfo.Arguments = "-d " + System.IO.Path.Combine(Application.StartupPath + @"\TempJavaalfgwaepfgawe") + " " + files;
p.Start();

p.WaitForExit();
StreamReader sr = new StreamReader(p.StandardError);
MessageBox.Show(sr.ReadToEnd());

无论如何,错误源于我声明streamreader时的错误:

StreamReader sr = new StreamReader(p.StandardError);

我收到以下两个错误:

The best overloaded method match for 'System.IO.StreamReader.StreamReader(string)' has some invalid arguments

Argument 1: cannot convert from 'System.IO.StreamReader' to 'string'

3 个答案:

答案 0 :(得分:4)

StandardError的{​​{1}}属性已经是Process。没有必要创建一个新的。

但是,您需要在进程启动之前重定向标准错误,以便从中读取。

StreamReader

答案 1 :(得分:3)

p.StandardError属性已经是StreamReader,因此您只需阅读它即可:

p.WaitForExit();
MessageBox.Show(p.StandardError.ReadToEnd());

另外,在开始进程之前不要忘记重定向标准错误,否则当您尝试阅读时会出现异常:

p.StartInfo.RedirectStandardError = true;

答案 2 :(得分:3)

p.StandardError 

已经是StreamReader,请使用该实例。