C#Windows服务自助终止服务

你如何自我终止服务?

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

任何的想法?

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

System.ServiceProcess.ServiceController svc = new System.ServiceProcess.ServiceController("NameOfYourService"); svc.Stop(); 

编辑:

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

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