【发布时间】:2011-05-30 00:39:09
【问题描述】:
假设我有一个带有表的数据库,该表中的每条记录都对应一个要执行的操作。该表有一个日期时间字段,其中存储了下一次应该执行的动作。
Windows 服务正在读取此表,并且操作存储在数据结构中。服务每隔几分钟读取一次表,并将新的操作合并到数据结构中,因此不会错过同时创建的操作。
每个动作都有一定的重复间隔。当动作运行时,日期时间字段将更新到它的下一个时刻 应该基于该间隔运行。
现在我想知道正确的行动方案:实际开始行动的首选方式是什么 它的给定时间?
假设我有一个动作应该在 09:00 在数据结构中运行,我如何确保它在 09:00 触发? 我目前想到的是每分钟检查一次数据结构,将当前时间与计划的动作时间进行比较,如果它们匹配,则执行动作并根据其关联的时间间隔更新动作的执行时间。
作为一种数据结构,我倾向于排在队列中,所以我可以在前面处理下一个作业,我只需要检查第一个作业,但是每次发现新动作时我都需要重新排列队列。
我的主要兴趣点是检查是否应执行操作的好方法,然后将遵循适当的数据结构。表中的操作数量会非常少,不会超过 25 个。我无法控制数据库,所以一切都应该在 C# 中以编程方式完成,以防您想知道。 有什么建议、经验或建议吗?
【问题讨论】:
-
您需要数据库吗?谁启动计划任务?
-
取决于系统;在数据库(或类似数据库)中,您可以保存系统状态以防系统崩溃。
-
是的,需要一个数据库作为添加新操作等的中心点。当然,这只是系统的一小部分。唯一要讨论的应该是检查时间的方式。
标签: c# scheduled-tasks