c# - 处理 Windows 服务停止/暂停请求期间的延迟

标签 c# .net windows windows-services

我有一个派生自 ServiceBase 的 Windows 服务类,它使用 System.Timers.Timer 以频繁的间隔运行代码。 OnStopOnPause 的处理程序使用定时器线程的一些信号来检查定时器是否仍在运行并等待它完成。

在这种情况下是否有推荐的处理延迟错误的方法,例如处理程序等待计时器线程停止的时间过长?

我是否应该继续等待,直到 SCM 放弃(但这会使服务进入一种状态,除了终止进程之外,您无法对该服务做任何事情,有时重启是重启它的唯一方法) ?或者我可以抛出一个异常(这会让它处于类似的状态,还是只是中止停止/暂停请求)?

如果我可以拒绝暂停/停止请求并让 SCM 将其置于用户可以尝试再次暂停/停止的状态,我会更喜欢它。我可以中止计时器线程,但有时它会锁定在其他资源上,我宁愿它等到完成,并且只记录一个错误,管理员可以稍后尝试停止。

最佳答案

您可以使用 RequestAdditionalTime通知 SCM 您需要更多时间来停止/暂停服务的方法。

关于c# - 处理 Windows 服务停止/暂停请求期间的延迟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2146680/

相关文章:

c# - 从低级程序员的角度看 .NET Framework

windows - 通过 Windows 命令行进行 Hardsub/转换

C# LINQ to XML 缺少空格字符

c# - 将整数设置为 0 的整数扩展方法

c# - 扩展方法重载选择

c# - .net 中的对象比较

windows - Theano导入错误-Windows 7-64b

c++ - 如何获得给定进程的窗口站?

c# - 在卷纸上打印

c# - 在 C# 中运行多个任务时查找每个任务所花费的时间