【发布时间】: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 个服务,您会采用这种方法吗?而不是拉状态,我更喜欢(如果可能的话)服务可以在一定的时间间隔内将您的状态推回(会有拉但重量轻)。或者,我会对这些服务进行分类并明智地获得状态类别。
-
另外,进程间通信有多种方式。您也可以学习这一点,以便接受更好的方法。