【问题标题】:Prevent windows service from stopping during debug防止 Windows 服务在调试期间停止
【发布时间】:2013-03-26 09:22:42
【问题描述】:

我正在为该产品开发一个扩展,它实际上是 Windows 服务。我从 Visual Studio 附加到服务,但在调试几分钟后服务停止工作,所以我需要从头开始调试或快速完成所有工作。

我很确定灵魂应该存在。有人可以帮帮我吗?

【问题讨论】:

  • 您是否将代码置于无限的 while 、 Timer 甚至工作背景中?保持服务正常运行很重要

标签: c# windows debugging service windows-services


【解决方案1】:

我不认为将调试器附加到实时服务是一个好主意;服务管理器希望服务能够迅速响应状态请求和控制信号,如果服务是单步执行的或受到其他干扰,则服务无法做到这一点。

调试服务的通常过程是让可执行文件有一个命令行选项,使其作为常规应用程序运行,并在必要时使用一些机制来模拟服务控制信号。然后,您可以像调试任何其他应用程序一样对其进行调试。

如果确实必须在实时服务上进行调试,另一种方法可能是在虚拟机(或单独的物理机)中运行服务并使用内核调试器。

【讨论】:

    【解决方案2】:

    Windows 服务停止的主要原因有两个

    1) 它完成他们的工作并执行你的代码,这意味着你的代码不会进入计时器、无限循环或做后台工作

    2) 发生异常导致服务停止工作,这意味着您需要在整个代码中放置一个大的 try\catch 以跟踪错误在哪里并防止服务停止

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-06-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多