【发布时间】:2013-10-10 18:16:32
【问题描述】:
从 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方法。见:stackoverflow.com/questions/554276/…