我将控制台应用程序重新设置为WinForm应用程序。我现在无法从另一个控制台应用程序获得输出

时间:2012-05-01 02:17:53

标签: c# winforms console

我有C#console app,它运行另一个Borland C控制台应用程序。它运作正常。 但在我将第一个应用程序重制为WinForm应用程序后,我无法从Borland C控制台应用程序获得输出。

代码在这里:

Process p = new Process();    
p.StartInfo.CreateNoWindow = true;    
p.StartInfo.UseShellExecute = false;    
p.StartInfo.RedirectStandardError = true;    
p.StartInfo.RedirectStandardOutput = true;    
p.StartInfo.FileName = name1;    
p.Start();    
StreamReader sr = p.StandardOutput;    
progOutput = sr.ReadToEnd();    
//progOutput = p.StandardOutput.ReadToEnd();    
p.WaitForExit();    

字符串progOutput为空。如果我使用line,我会得到相同的结果 progOutput = p.StandardOutput.ReadToEnd();代替StreamReader

Borland C控制台应用程序真正启动并正常创建了它的输出文件 但它的输出在WinForm应用程序中消失了。 正如我所说,这个代码在C#console app中运行正常, 但现在在C#Windows窗体应用程序中不起作用。

顺便说一句,如果我在WinForm应用程序中运行C#console应用程序,输出就可以了。 Someland错误的Borland C输出? 但是当我在C#console app中运行Borland C应用程序时,它工作正常。 所以我很困惑。

由于

2 个答案:

答案 0 :(得分:1)

在某些情况下,我发现间接启动可执行文件是有益的。

p.StartInfo.FileName = "cmd";
p.StartInfo.Arguments = "/C " + name1;

..尤其是在输出重定向问题时。但是你说它可以用作控制台应用程序吗?!

答案 1 :(得分:0)

检查

var errorOut = p.StandardError.ReadToEnd();

您可能会将输出作为StandardError输出。您可以找到许多与此相关的问题,我们期望从StandardOutput输出,但它会重定向到StandardError。