C#Windows服务自助终止服务

时间:2011-07-31 20:59:49

标签: c# windows-services

您如何自行终止服务?

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

有什么想法吗?

1 个答案:

答案 0 :(得分:15)

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

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

修改

另一种选择是在你的服务中调用ServiceBase.Stop() - 如果你有权访问你的ServiceBase派生类实例,那将是更干净的方式 - 在许多情况下,虽然不得不这样做很麻烦传递这种依赖。

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