假设我有一个带有表的数据库,此表中的每个记录都与要执行的操作相对应。这个表格有一个日期时间字段,在该字段中存储下一个动作应该执行的时刻。运行定时任务
此表正在被windows服务读取,并且操作存储在数据结构中。每隔几分钟,服务将读取表格,并将新操作合并到数据结构中,同时创建的操作不会错过。
每个动作都有一定的重复间隔。当某个操作已经运行时,日期时间字段会根据该时间间隔更新到下一个应该运行的时间。
现在,我在这里想知道正确的行动方案:在给定的时间,实际开始行动的首选方式是 ?
假设我有一个应该在09:00在数据结构中运行的操作,我如何确保在09:00触发? 我目前想要的是每分钟检查一次数据结构,比较当前时间和动作的计划时间,如果它们匹配,则执行动作并根据其相关时间间隔更新动作的执行时间。
作为一个数据结构,我倾向于在队列中考虑,所以我可以在前面做下一个工作,而且只需要检查第一个,但是随后我需要在每次发现新操作时重新排列队列。
我的兴趣点主要是检查是否应该执行一个动作,一个合适的数据结构将遵循的好方法。表中的操作数量非常低,不超过25个。我无法控制数据库,因此一切都应在C#中以编程方式完成,以防您不知所措。 任何提示,经验或意见的建议?
你 - 需要 - 一个数据库?谁启动计划任务? – 2010-12-23 15:13:58
取决于系统;在一个数据库(或类似的)你可以坚持系统状态,以防系统崩溃。 – 2010-12-23 15:15:10
是的,需要数据库作为添加新操作等的中心点。当然,这只是系统的一小部分。讨论的唯一问题应该是时间被检查的方式。 – Oxymoron 2010-12-23 15:21:49