如何根据预定时间暂停/恢复进度?

时间:2013-06-11 13:55:22

标签: c# scheduled-tasks scheduling

有运行调度程序的解决方案可以开始触发。但我的要求是在结束时也触发。

我有一个如下表所示的时间表: -

Scheduler Input

  1. 我必须在预定时间开始时恢复进度。
  2. 我必须在有效的预定日期范围之间休息时暂停,并在休息后恢复。
  3.   

    似乎工作复杂。请给我一个更好的解决方法。

    • 我有一个计时器。根据上述时间表,它必须计算2013年6月11日19:16和2013年6月17日23:59之间的时间间隔(周二有自定义期间)。 现在以'Resume'状态启动计时器。
    • 此计时器过后,计算的时间间隔为2013年6月17日23:59至2013年6月18日06:00。现在以“暂停”状态启动计时器。等等....

1 个答案:

答案 0 :(得分:0)

我假设您在上面显示的计划应用程序将该信息保存到文件中。如果是这样,您可以执行以下操作。

首先,您要执行的进程必须有某种方式被告知它需要关闭。我会假设它是某种Windows事件或某个文件或数据库中的标志,它会定期检查。如果你没有这个设施,那么你将很难安全地完成任务。

有一个小应用程序(称之为Keeper)从文件中读取计划。然后检查您正在安排的程序是否正在运行。如果它正在运行并且是暂停的时间,则发送信号告诉它停止。然后,创建计划任务以在下一个开始时间重新启动程序。还要创建一个计划任务,以使Keeper在下一个暂停时间运行。然后守护者退出。

每次修改计划时,您只需要运行Keeper程序,它就会知道它需要做什么:暂停程序,安排程序再次运行,并安排自己在下一次暂停时再次运行时间。

维护计划任务涉及少量复杂性,但这并不算太糟糕。只需要Keeper删除Program和Keeper的任何计划任务,基本上维护一些东西,以便每个都不会超过一个。

您需要访问task scheduler API