【问题标题】:c# - Is it fine to use multiple timers in a single applicationc# - 在单个应用程序中使用多个计时器是否可以
【发布时间】:2018-12-19 13:00:32
【问题描述】:

我正在制作一项服务,用于监控服务器上运行的多个服务的状态。 每项服务都需要在不同的时间间隔内进行监控。所以,为此我使用了多个计时器。有点像 -

internal System.Timers.Timer Service1CheckTimer;
internal System.Timers.Timer Service2CheckTimer;
.
.
internal System.Timers.Timer ServiceNCheckTimer;

现在,服务数量已达到 15 种左右,未来可能还会增加。

所以我想知道,使用这么多计时器可以吗?如果各自的Timer_Elapsed事件相互重叠,会不会给执行带来麻烦?

【问题讨论】:

  • 如果间隔是几分钟或更长时间,也许可以考虑将 check.exe 作为为每个服务配置的计划任务运行,这似乎更容易管理和配置。
  • 为什么有多个定时器?每次要添加另一个服务进行检查时,您不必重新编译或添加另一个计时器。
  • 让多个计时器同时运行(以它们自己的时间间隔)应该不会产生任何问题(如果公共资源未正确同步,则竞争条件除外)。但是这里的任何建议都直接取决于您的“N”..您必须监控多少个服务器?如果要监控 1000 个服务,您会采用这种方法吗?而不是拉状态,我更喜欢(如果可能的话)服务可以在一定的时间间隔内将您的状态推回(会有拉但重量轻)。或者,我会对这些服务进行分类并明智地获得状态类别。
  • 另外,进程间通信有多种方式。您也可以学习这一点,以便接受更好的方法。

标签: c# timer


【解决方案1】:

通常可以有多个计时器,即使是 20 个也不成问题。计时器都在线程池上触发它们的事件。您可能对同时发生多少个事件感兴趣 - 这可能会导致线程池中可用线程耗尽并导致延迟。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-11
    • 2011-05-24
    • 1970-01-01
    • 2014-10-28
    • 1970-01-01
    相关资源
    最近更新 更多