我有一个.NET服务。
我有一个.NET控制台应用程序。
我想要服务调用Process.Start("consoleapp.exe")
并获取从应用程序返回的一些信息,理想情况下只返回一个数字。
我该怎么做?
修改
我认为必须是:Process.Start("myapp.exe").ExitCode
- 但如何在控制台应用中设置退出代码?
答案 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)
控制台应用可以设置退出代码。
控制台应用可以通过以下任一方式设置退出代码:
System.Environment.Exit(exitcode)
或main
函数返回一个int。 ExitCode
类的System.Diagnostics.Process
属性允许服务进程检查控制台应用程序的退出代码。