我们实现了一个包含几个计时器的 Windows 服务。随着时间的推移,计时器的逻辑变得越来越复杂。是时候重构我们的解决方案了,一种可能的方法是使用一个有据可查的框架来处理我们的需求。
有这样的规则:
每天早上 9 点开始计时器 A
每 2 分钟启动计时器 B
如果计时器 A 已启动,则不要启动任何其他计时器
定时器 C 和 D 不允许同时运行
我查看了 Quartz.net,因为它有我们列表的前 2 个要求,但它不处理任何并发规则。
有什么框架我可以看看吗?
我们实现了一个包含几个计时器的 Windows 服务。随着时间的推移,计时器的逻辑变得越来越复杂。是时候重构我们的解决方案了,一种可能的方法是使用一个有据可查的框架来处理我们的需求。
有这样的规则:
每天早上 9 点开始计时器 A
每 2 分钟启动计时器 B
如果计时器 A 已启动,则不要启动任何其他计时器
定时器 C 和 D 不允许同时运行
我查看了 Quartz.net,因为它有我们列表的前 2 个要求,但它不处理任何并发规则。
有什么框架我可以看看吗?
我有类似的要求:本质上,您需要的是一个可以轻松序列化到磁盘或数据库的状态机,使用分层状态轻松指定状态机的某种方式,轻松指定时间事件的某种方式(After,Every,At)以及一些可以轻松知道何时将状态机加载回内存以根据当前时间推进状态的方法。
最后我写了自己的状态机,因为我没有找到满足我要求的状态机,特别是时间事件和序列化要求。您可以在Nuget Package中获取源代码。博客条目在这里。欢迎反馈。