制作每天定时执行的功能

Posted petewell

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了制作每天定时执行的功能相关的知识,希望对你有一定的参考价值。

如果是启动某程序,可以透过系统功能办到,但如果要能够让使用者设定,一天多个时间启动,或者是WinCE,就需要自己制作

整点检查基本上是不可能的,因为在polling的时候,没可能连毫秒都相等,又或者说程序在处理很多事情时,连秒都对不上

所以一定要用范围检查,而且要避免重复启动,及节省polling的资源,所以我就用以下方法


?如果是启动某程序,可以透过系统功能办到,但如果要能够让使用者设定,一天多个时间启动,或者是WinCE,就需要自己制作

整点检查基本上是不可能的,因为在polling的时候,没可能连毫秒都相等,又或者说程序在处理很多事情时,连秒都对不上

所以一定要用范围检查,而且要避免重复启动,及节省polling的资源,所以我就用以下方法

定一个时间范围Tolerance To的变量,检查范围是发动时间Trigger Ti,那检查范围就是Ti-To ~ Ti+To,检查周期也是To

结果就是把时间切会以2To为单位,来检查是否需要启动,如果缩短To,就可以增加精度,拉长To就可以节省资源,再配合一天会发动多少次就可以得出该用的To

程序大概会长这样

//假设有一个TriggerTime的类可以记录一个时间点,例如12:30

TriggerTime triggerTime;
long toleranceTime;
//init TriggerTime objects
DateTime l_triggerTime = DateTime.Now.Date + triggerTime;
DateTime l_lowerBound = DateTime.Now - toleranceTime;
DateTime l_upperBound = DateTime.Now + toleranceTime;
bool isTerminate = false;
while(!isTerminate)

    if(l_triggerTime > l_lowerBound && l_triggerTime < l_upperBoud)
       //...trigger your DoWork   
    Thread.Sleep(toleranceTime);


至于RTOS的WinCE有没有System Time Event的功能,我还在研究,目前是用这样的方法

My WP Blog with english technical docs.

原文:大专栏  制作每天定时执行的功能


以上是关于制作每天定时执行的功能的主要内容,如果未能解决你的问题,请参考以下文章

定时执行 Job - 每天5分钟玩转 Docker 容器技术(135)

Oracle job有定时执行的功能,可以在指定的时间点或每天的某个时间点自行执行任务

oracle job有定时执行功能

linux定时任务每天的0点执行一次,怎么写

JAVA定时执行任务,每天定时几点钟执行任务

linux定时任务