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