C# windows服务停止时,子进程被终止
我有一个小型的C#console应用程序,它可以监控一些配置好的进程/应用程序,这些也是C#console应用程序,让它们保持运行,以便在崩溃时启动它们。如果我通过执行exe文件(在交互模式下)来运行这个监视器控制台应用程序,它会工作得很好。但是,如果我使用NSSM将此应用程序安装为windows服务,则当服务停止时,受监视的进程将被终止,这不是我想要的 要复制的最小代码(此代码仅启动子进程一次,并且根本不监视它): 监控应用程序:C# windows服务停止时,子进程被终止,c#,windows-services,nssm,C#,Windows Services,Nssm,我有一个小型的C#console应用程序,它可以监控一些配置好的进程/应用程序,这些也是C#console应用程序,让它们保持运行,以便在崩溃时启动它们。如果我通过执行exe文件(在交互模式下)来运行这个监视器控制台应用程序,它会工作得很好。但是,如果我使用NSSM将此应用程序安装为windows服务,则当服务停止时,受监视的进程将被终止,这不是我想要的 要复制的最小代码(此代码仅启动子进程一次,并且根本不监视它): 监控应用程序: class Program { static void
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服务停止后保持这些子进程运行
谢谢尝试使用
startInfo.UseShellExecute=true“子”进程的代码>。这将作为一个单独/独立的进程从shell执行该进程。NSSM有一个配置选项,在停止服务时不会终止整个进程树
您可以在UI中使用nssm.exe编辑“我的服务名称”
或直接使用nssm.exe设置“我的服务名称”AppKillProcessTree 0来配置此功能
,我现在已经尝试过,但没有成功:((我也尝试过CreateNoWindow属性和其他一些属性)