我有一个派生自 ServiceBase
的 Windows 服务类,它使用 System.Timers.Timer
以频繁的间隔运行代码。 OnStop
和 OnPause
的处理程序使用定时器线程的一些信号来检查定时器是否仍在运行并等待它完成。
在这种情况下是否有推荐的处理延迟错误的方法,例如处理程序等待计时器线程停止的时间过长?
我是否应该继续等待,直到 SCM 放弃(但这会使服务进入一种状态,除了终止进程之外,您无法对该服务做任何事情,有时重启是重启它的唯一方法) ?或者我可以抛出一个异常(这会让它处于类似的状态,还是只是中止停止/暂停请求)?
如果我可以拒绝暂停/停止请求并让 SCM 将其置于用户可以尝试再次暂停/停止的状态,我会更喜欢它。我可以中止计时器线程,但有时它会锁定在其他资源上,我宁愿它等到完成,并且只记录一个错误,管理员可以稍后尝试停止。
最佳答案
您可以使用 RequestAdditionalTime通知 SCM 您需要更多时间来停止/暂停服务的方法。
关于c# - 处理 Windows 服务停止/暂停请求期间的延迟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2146680/