我正在创建一个窗口服务,它启动一个进程,我在StartInfo.Arguments
. 正如预期的那样工作正常。
问题是当我停止 windows 服务时,我需要告诉正在运行的程序在 windows 服务停止之前正常关闭。因为如果我只是终止进程,程序不会保存收集到的数据。我运行的程序是Process Monitor,它接受以下命令"/terminate"
。
如何/terminate
在我的 Windows 服务停止之前传递参数?
我正在创建一个窗口服务,它启动一个进程,我在StartInfo.Arguments
. 正如预期的那样工作正常。
问题是当我停止 windows 服务时,我需要告诉正在运行的程序在 windows 服务停止之前正常关闭。因为如果我只是终止进程,程序不会保存收集到的数据。我运行的程序是Process Monitor,它接受以下命令"/terminate"
。
如何/terminate
在我的 Windows 服务停止之前传递参数?
有几种方法可以接近此解决方案,但您可以向该过程发出信号,并根据您使用此信号发送的内容,它应该执行其“清理”代码。完成后,应该向生成它的进程发出信号,表明它完成了清理代码,然后可以关闭。这当然假设您为 Window 服务和正在生成的进程编写了代码。
我设法找到了解决方案。在OnStop()
服务的方法中,我需要创建Process Monitor的新实例并传递/Terminate
参数:
Process process = new Process();
process.FileName = "\Procmon.exe" ;
process.StartInfo.Arguments = "/AcceptEula /Terminate";
process.Start();
这样,它就会优雅地停止所有Process Monitor实例。