在 Windows 服务中调用 Environment.Exit 方法会不会使 SCM 调用服务的 onStop() 方法?这种行为是否不可预测?
我有几个 Windows 服务都有这样的代码。很遗憾,我无法移除这个行为。但我需要知道是否会调用 onStop() 方法,以决定是否要将一些通用的停止代码放在该方法内部或调用 Environment.Exit 的方法中。
在 Windows 服务中调用 Environment.Exit 方法会不会使 SCM 调用服务的 onStop() 方法?这种行为是否不可预测?
我有几个 Windows 服务都有这样的代码。很遗憾,我无法移除这个行为。但我需要知道是否会调用 onStop() 方法,以决定是否要将一些通用的停止代码放在该方法内部或调用 Environment.Exit 的方法中。
Enviroment.Exit
将关闭被服务包装的进程。
因此,调用它不会调用onStop()
方法。
您可以自己调用该方法,而不是调用Exit
。
您可以使用以下代码来调用SCM stop
。
System.ServiceProcess.ServiceController svc = new System.ServiceProcess.ServiceController("NameOfYourService");
svc.Stop();
ServiceController
类的Stop
方法。参考:https://dev59.com/3HRB5IYBdhLWcg3wro2B - Ofiris