【发布时间】:2011-08-01 05:44:17
【问题描述】:
如何让服务自行终止?
Environment.Exit 将导致应用程序启动但服务保持运行。
有什么想法吗?
【问题讨论】:
标签: c# windows-services
如何让服务自行终止?
Environment.Exit 将导致应用程序启动但服务保持运行。
有什么想法吗?
【问题讨论】:
标签: c# windows-services
您可以使用 SCM 从服务本身中关闭您的服务:
System.ServiceProcess.ServiceController svc = new System.ServiceProcess.ServiceController("NameOfYourService");
svc.Stop();
编辑:
另一种选择是在您的服务中调用ServiceBase.Stop() - 如果您可以访问您的ServiceBase 派生类实例,那将是更简洁的方法 - 在许多情况下,尽管必须传递这种依赖关系,但它很麻烦.
如果您有未捕获的异常,我个人只会让服务崩溃(或记录它然后throw),这将在事件日志中留下一条消息,详细说明终止原因。如果您绝对需要,您可以捕获异常,然后调用ServiceBase.Stop()。
【讨论】:
Service1 派生自ServiceBase,您可以添加一个公共方法,然后调用base.Stop() - 或者如果您不想要或不引用Service1,您可以使用SCM。