我有一个小型 C# 控制台应用程序,它监视一些已配置的进程/应用程序,这些也是 C# 控制台应用程序,并保持它们运行,以便在它们崩溃时启动它们。如果我通过执行 exe 文件(以交互模式)运行此监视器控制台应用程序,它会很好地工作。但是,如果我使用 NSSM 将此应用程序安装为 Windows 服务,则当服务停止时,受监控的进程将被终止,这不是我想要的。
重现的最少代码(此代码仅启动子进程一次,根本不对其进行监控):
监控应用:
class Program
{
static void Main(string[] args)
{
ProcessStartInfo startInfo = new ProcessStartInfo();
startInfo.FileName = "..\\..\\..\\TestApp\\bin\\debug\\TestApp.exe";
Process.Start(startInfo);
Console.WriteLine("Process started");
Console.Read();
}
}
被监控的应用程序:
static void Main(string[] args)
{
while (true)
{
Console.WriteLine("running...");
Thread.Sleep(3000);
}
}
有没有办法在 Windows 服务停止后保持这些子进程运行?
谢谢