如何使一个服务自行终止?
使用 Environment.Exit 可以让应用程序终止,但服务仍在运行。
有什么想法吗?
如何使一个服务自行终止?
使用 Environment.Exit 可以让应用程序终止,但服务仍在运行。
有什么想法吗?
你可以使用SCM在服务内部关闭自己的服务:
System.ServiceProcess.ServiceController svc = new System.ServiceProcess.ServiceController("NameOfYourService");
svc.Stop();
编辑:
另一种选择是在你的服务中调用ServiceBase.Stop()
- 如果你可以访问你的ServiceBase
派生类实例,这将是更加干净的方式 - 在许多情况下,通过传递该依赖项来做到这点可能过于繁琐。
如果你有未捕获的异常,我个人会让服务崩溃(或记录并throw
),这将在事件日志中留下终止原因的详细信息。如果你确实需要,你可以捕获异常,然后调用ServiceBase.Stop()
。
Service1.ForceStop(); Environment.Exit(1); }
那么,在我的catch语句块中,我可以这样调用它吗?{Service1.ForceStop()} - user222427