1

我有 C# 控制台应用程序,它运行另一个 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# 控制台应用程序中运行良好,但现在在 C# Windows 窗体应用程序中不起作用。

顺便说一句,如果我在 WinForm 应用程序中运行 C# 控制台应用程序,输出就可以了。Borland C 输出有问题?但是当我在 C# 控制台应用程序中运行 Borland C 应用程序时它起作用了。所以我很困惑。

谢谢

4

2 回答 2

1

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

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

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

于 2012-05-01T02:54:14.677 回答
0

查看

var errorOut = p.StandardError.ReadToEnd();

你可能会得到标准错误的输出。您可以找到许多与此相关的问题,我们期望来自 StandardOutput 的输出,但它重定向到 StandardError。

于 2012-05-01T02:53:29.537 回答