代码之家  ›  专栏  ›  技术社区  ›  Chris Miller

用.NET编写的服务能否自行终止?

  •  19
  • Chris Miller  · 技术社区  · 17 年前

    到目前为止,我读到的所有内容都表明,终止服务的唯一安全方法是通过服务控制管理器。我的服务作为本地服务运行,没有启动或停止服务的权限,因此我无法从服务本身访问SCM。在仍然按照SCM的规则进行游戏时,是否有其他方法可以自行终止?

    4 回复  |  直到 17 年前
        1
  •  36
  •   configurator    17 年前
        2
  •  8
  •   Martin Liversage    16 年前

    如果您想终止服务而不是停止服务(可能是因为服务捕获了一个未经处理的异常),您可以使用 Environment.Exit(1)

    Windows将发现服务已意外终止。如果服务已配置为恢复,将使用恢复过程,其中包括重新启动服务、运行程序或重新启动计算机的选项。

        3
  •  5
  •   Jon Skeet    17 年前

    如果让所有正在执行的线程都完成,会发生什么?我可以想象三种可能的结果:

    • SCM注意到,认为您已死亡,并重新启动您
    • SCM没有注意到,并显示您仍在运行

    编辑:我怀疑 this answer

        4
  •  -2
  •   casperOne    17 年前

    不让服务在本地服务下运行。让它在有权停止服务的用户下运行。

    虽然自我终止服务的想法不是最好的想法。这一事实本身就意味着它应该是一个应用程序,而不是一个服务。

    推荐文章