本帖最后由 xms77 于 2011-9-27 15:58 编辑
自己做了一个定时器,没有用AU3自带的AdlibRegister函数,一开始定时器1看似工作正常,但是后来发现如果处理任务的时间超过定时时间间隔,定时器会出现失效1小时的情况发生,于是后来修改了定时器1,变成定时器2,基本解决了这个问题。不知道如果用AdlibRegister函数的话,用什么方法来解决这个问题?
定时器1$Threshold_time = @MIN
$Rightnow_Min = @MIN
$Time_interval = 1 ;间隔时间为1分钟
while
$Rightnow_Min = @MIN
If $Rightnow_Min = $Threshold_time Then ;如果当前的分钟和指定的分钟相符
$Threshold_time = $Rightnow_Min + $Time_interval ; 更新下一次做任务的分钟
If $Threshold_time >= 60 Then $Threshold_time = $Threshold_time - 60 ;如果下一次的指定分钟超过60,则减去60
;.........
;.......
;....
;...
MsgBox(0,"next time is ","I am doing task now.")
EndIf
Sleep(100)
WEnd
定时器2$Threshold_time = @MIN
$Rightnow_Min = @MIN
$Time_interval = 1 ;间隔时间为1分钟
while
$Rightnow_Min = @MIN
If $Rightnow_Min = $Threshold_time Then ;如果当前的分钟时间和指定的分钟时间相符
$Threshold_time = $Rightnow_Min + $Time_interval ; 更新下一次的有效分钟时间
If $Threshold_time >= 60 Then $Threshold_time = $Threshold_time - 60 ;如果下一次的指定分钟超过60,则减去60
$timeA = @MIN ;任务开始时间
;.........
;.......
;....
;...
MsgBox(0,"next time is ","I am doing task now.")
$TimeB = @MIN ;任务完成时间
If $TimeB < $timeA Then $TimeB = $timeb + 60 ;说明已经进入下一个小时
If $TimeB - $timeA >= $Time_interval Then $Threshold_time = $TimeB ;如果任务处理时间超出定时时间间隔
If $Threshold_time >= 60 Then $Threshold_time = $Threshold_time - 60 ; 修正下次触发任务的阀值时间,如果超过60,就减去60
EndIf
Sleep(100)
WEnd
|