您如何自行终止服务?
Environment.Exit将导致应用启动,但服务仍在运行。
有什么想法吗?
答案 0 :(得分:15)
您可以使用SCM从服务本身关闭服务:
System.ServiceProcess.ServiceController svc = new System.ServiceProcess.ServiceController("NameOfYourService");
svc.Stop();
修改强>
另一种选择是在你的服务中调用ServiceBase.Stop()
- 如果你有权访问你的ServiceBase
派生类实例,那将是更干净的方式 - 在许多情况下,虽然不得不这样做很麻烦传递这种依赖。
如果您有未被捕获的异常,我个人会让服务崩溃(或记录它然后throw
),这将在事件日志中留下详细说明终止原因的消息。如果您绝对需要,可以捕获异常,然后调用ServiceBase.Stop()
。