VB的延时问题

来源:百度知道 编辑:UC知道 时间:2024/06/09 02:02:08
if loopfinish>secondsinday then
loopfinish=loopfinish-secondsinday
do while timer > loopfinish
loop
loopfinish=当前的时间+需要延时的时间
secondsinday=一天的总时间量
上面的代码中
if 如果loopfinish>secondsinday then
那么loopfinish=loopfinish-secondsinday
比如一天的总秒数为86400秒,我86395秒开始延时 延时需要100秒 ,超过了一天的总秒数那么系统就要把loopfinish=loopfinish-secondsinday最后的结果=95秒 下面问题来了
do while timer > loopfinish
loop
timer是当前的时间,走过86400秒后系统的时间就是1秒;那上面的代码中do while timer=(1秒) > 95秒 怎么可能成立呢?
是不是应该改成do until timer > loopfinish 或者把大于改成小于?
以为代码太长我也能截取一部分写上来,上面写的很乱也不知道能看的明白不 所以我不给分 能告诉我答案我确认的时候在加10分
86395是我要开始循环的时间 那假如我要循环100秒 那就是86495秒超过了一天的总时间那么就是从今天循环到明天+95秒 95秒是这样得来的
想了下觉得改成这样do until timer > loopfinish 也不对 比如timer=86395秒开始循环的时间 我需要到达的是第2天的第95秒 那么timer开始循环的第1秒=86395永远大于95那也是错误的?是不是应该 do until timer <> loopfinish 我是想知道是我的思路不对还是书上的问题

汗一下,干吗不用系统的延时函数sleep,括号内1000表示1秒!
if loopfinish>secondsinday then sleep(100000)

如果你非要用循环,可以这样:
if loopfinish>secondsinday then
oldtime = timer '获得开始延时时的时间
do while timer-oldtime > loopfinish
’现在时间减去开始延时的时间,就是已经延时的时间,只要大于100退出延时
loop
end if

另外,既然一天总时间为86400秒,延时100秒,那么进入循环的时间将是86400-100=86300秒,怎么可能会在86395???

Public Function Delay(DelaySeconds As Single, Optional DoEventsEnbled As Boolean = True, Optional ShowErrorMsg As Boolean = True) As Long
'=====延时,秒数=====
'独立函数
'
'DelaySeconds 秒数,可以为小数
'DoEventsEnble 延时过程中是否执行 Doevnts
'正常处理返回1,错误返回-1
Static Abort As Boolean
If Abort Then Exit Function

On Error GoTo er
If DelaySeconds >= 172800 Then
MsgBox "函数中的DelaySeconds值为:" & CStr(DelaySeconds) & "超过了最大限度(172800)。", vbCritical
Exit Functi