我有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应用程序时,它工作正常。 所以我很困惑。由于
答案 0 :(得分:1)
在某些情况下,我发现间接启动可执行文件是有益的。
p.StartInfo.FileName = "cmd";
p.StartInfo.Arguments = "/C " + name1;
..尤其是在输出重定向问题时。但是你说它可以用作控制台应用程序吗?!
答案 1 :(得分:0)
检查
var errorOut = p.StandardError.ReadToEnd();
您可能会将输出作为StandardError输出。您可以找到许多与此相关的问题,我们期望从StandardOutput输出,但它会重定向到StandardError。