【问题标题】:Creating a task scheduler创建任务调度器
【发布时间】:2011-06-28 11:11:38
【问题描述】:

我需要安排经常性任务。我的应用程序在 MFC 中。例如,我可能需要将文件发送到“从日期”“到日期”“频率”“开始时间”“结束时间”上的特定位置。我想有一个列表并在那里添加这些参数并创建一个每秒经过的计时器。我可以在哪里检查条件列表并调用文件传输。但问题是如果列表很大,那么我可能无法做到。有没有其他方法可以做到这一点?

【问题讨论】:

  • 为什么不用系统任务调度器?

标签: multithreading winapi mfc


【解决方案1】:

创建计划事件的优先级队列,并为每个“计划”,仅用该“计划”的 NEXT 事件填充队列。只等待优先级队列中的第一个 EVENT,当使用时,查找该事件的调度项,并将其下一个事件填充到队列中。

请询问以上是否需要更多说明。

编辑:

您将在特定日期和时间触发您的活动,具体取决于您最满意的时间。由于您只有一个必须等​​待的事件(您可以从队列的 HEAD 复制它),因此您有多种选择,例如:

  • SetTimer() 间隔一秒,将当前时间与事件时间进行比较。
  • SetTimer() 用于当前时间到事件时间的持续时间。
  • 启动另一个线程,在其中等待单个对象,延迟计算为 eventi_time-now - 这将是最困难的,因为在主线程上调用某些内容时必须小心
  • ...等等

【讨论】:

  • 如何在特定日期和时间触发事件?
  • 丹尼尔感谢您的更新,但问题是不会只有一个事件。我会有预定项目的清单。
  • 是的,正如我所说,您将把您的日程安排列表转换为将处理其余部分的优先级队列。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-02-03
  • 1970-01-01
  • 1970-01-01
  • 2012-10-06
  • 1970-01-01
相关资源
最近更新 更多