C#Windows服务自助终止服务

6 c# windows-services

你如何自我终止服务?

Environment.Exit将导致应用程序启动但服务仍在运行.

任何的想法?

Bro*_*ass 15

您可以使用SCM从服务本身关闭服务:

System.ServiceProcess.ServiceController svc = new System.ServiceProcess.ServiceController("NameOfYourService");
svc.Stop();
Run Code Online (Sandbox Code Playgroud)

编辑:

另一个选择是调用ServiceBase.Stop()你的服务 - 如果你有权访问你的ServiceBase派生类实例,这将是更清晰的方式 - 在许多情况下,虽然必须传递这种依赖,但它很麻烦.

如果您有未被捕获的异常,我个人会让服务崩溃(或记录它然后throw),这将在事件日志中留下详细说明终止原因的消息.如果你绝对需要你可以捕获异常,然后调用ServiceBase.Stop().