如何使用C#

时间:2016-05-10 17:02:00

标签: c# process redirectstandardoutput

我有一个WinForm应用程序正在做一些工作并用System.Console编写一些输出,这是代码:

static int Main(string[] args)
{
    Application.EnableVisualStyles();
    Application.SetCompatibleTextRenderingDefault(false);

    Console.WriteLine("Some String");

    return 1;
}

假设我们将其命名为SubApp.exe

在另一个程序中,我想执行此subApp.exe并读取它使用System.Diagnostics.Process创建的输出。这是我的代码:

System.Diagnostics.Process p = System.Diagnostics.Process.Start("SubApp.exe", "Some Parameter");
p.StartInfo.UseShellExecute = false;
p.StartInfo.CreateNoWindow = true;
p.StartInfo.RedirectStandardOutput = true;
p.StartInfo.RedirectStandardError = true;

p.Start();
p.WaitForExit();

string output = p.StandardOutput.ReadToEnd();
string error = p.StandardError.ReadToEnd();
int exitCode = p.ExitCode;

但不幸的是,outputerror都是空的,更糟糕​​的是exitCode0。问题是什么?我是否以正确的方式进行手术?

1 个答案:

答案 0 :(得分:0)

让你的Rectangle向控制台写入参数,然后它会将控制台输出返回到过程输出

SubApp

然后致电您的static int Main(string[] args) { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Console.WriteLine(args[0]); // this will print only 'Some' part of argument all string will be in args seperating by space Console.WriteLine(args[1]); // this will print "Parameter" return 1; }

SubApp

执行此操作后,您将System.Diagnostics.Process p = System.Diagnostics.Process.Start("SubApp.exe", "Some Parameter"); p.StartInfo.UseShellExecute = false; p.StartInfo.CreateNoWindow = true; p.StartInfo.RedirectStandardOutput = true; p.StartInfo.RedirectStandardError = true; p.Start(); string output = p.StandardOutput.ReadToEnd(); string error = p.StandardError.ReadToEnd(); p.WaitForExit(); int exitCode = p.ExitCode; 变为Some Parameter变量