如果要终止服务而不是停止服务(可能是因为服务已捕获到其他未处理的异常),您可以使用 Environment.Exit(1) (如果需要,请使用其他退出代码)。
Environment.Exit(1)
Windows将发现该服务意外终止。如果已将服务配置为恢复,则将使用恢复过程,其中包括用于重新启动服务,运行程序或重新启动计算机的选项。
如果你让所有执行的线程完成,会发生什么?我可以想象三种可能的结果:
编辑:我怀疑 这个答案 真的是最好的,但为了感兴趣,我会把它(目前)留下来。
没有在本地服务下运行服务。让它在有权停止服务的用户下运行。
虽然自我终止服务的想法不是最好的想法。仅这一事实意味着它应该是一个应用程序,而不是一个服务。
尝试 ServiceBase.Stop() 。
ServiceBase.Stop()