如何从控制台应用程序返回值到.NET中的服务?

时间:2009-10-19 15:15:06

标签: .net windows-services console-application

我有一个.NET服务。

我有一个.NET控制台应用程序。

我想要服务调用Process.Start("consoleapp.exe")并获取从应用程序返回的一些信息,理想情况下只返回一个数字。

我该怎么做?

修改

我认为必须是:Process.Start("myapp.exe").ExitCode - 但如何在控制台应用中设置退出代码?

5 个答案:

答案 0 :(得分:11)

Process p = Process.Start("app.exe");
p.WaitForExit();
int number = p.ExitCode;

在app.exe中设置Environment.ExitCode ...

答案 1 :(得分:3)

您可以通过更改主要方法

来使用退出代码
public void Main(string[] args){return;}

public int Main(string[] args){return 0;}

不是一个优雅的解决方案,但它确实有效。

答案 2 :(得分:1)

可以通过标准ExitCode机制返回任意数字。您只需Start()一个流程,然后WaitForExit(),然后获取ExitCode的值。

答案 3 :(得分:1)

您可以使用退出代码,该代码可以从Main函数返回,也可以通过Environment.ExitCode设置。

另一种选择是让ConsoleApp写入标准输出流,并将输出重定向到主应用程序。

第二个选项的优点是,如果以后发现这一点,您可以返回比单个整数更多的数据。缺点是设置工作要多一些。

CodeProject article遍历重定向生成进程的标准输出流。

答案 4 :(得分:0)

控制台应用可以设置退出代码。

控制台应用可以通过以下任一方式设置退出代码:

  1. 致电System.Environment.Exit(exitcode)
  2. main函数返回一个int。
  3. ExitCode类的System.Diagnostics.Process属性允许服务进程检查控制台应用程序的退出代码。