看看这个 SO answer如何从 Windows 服务运行控制台应用程序。只需添加 WaitForExit,如下所示:
ProcessStartInfo info = new ProcessStartInfo(@"c:\myprogram.exe");
info.UseShellExecute = false;
info.RedirectStandardError = true;
info.RedirectStandardInput = true;
info.RedirectStandardOutput = true;
info.CreateNoWindow = true;
info.ErrorDialog = false;
info.WindowStyle = ProcessWindowStyle.Hidden;
Process process = Process.Start(info);
process.WaitForExit();
在控制台应用程序中,如果您退出Environment.Exit(statusCode)
或从控制台应用程序的主函数返回 int 值,您可以设置退出代码。或者您可以写入输出,然后在您的服务中检查退出代码 ( process.ExitCode
) 或输出流,以便确定进程是否成功退出。