|
- var StartTime: Cardinal;
- begin
- StartTime := GetTickCount;
- repeat
- Windows.Sleep(200);
- until ((GetTickCount - StartTime) > TimeToWait);
- end;
复制代码
有一点需要请教一下,既然我们默认的延时是以秒为单位的,Windows.Sleep 后面的毫秒数可不可以增大一点,比如 500 ?这样的话在同样的时间内执行的循环会比较少。至于时间精确度,那倒无所谓的,只是用来 Kill 进程,主要不是用来计时。
因为我以前在 ASP 中做延时函数(ASP 默认没有)的时候,发现时间跳跃单位越小,资源占用情况越大。像以下的代码,在执行期间,CPU 的占用率几乎是 95%~100%
- Sub TimeDelay(DelaySeconds) '老毛桃自己写的延时函数,可以精确到毫秒级
- dim Time1
- Time1=Timer()
- While Timer()<Time1+DelaySeconds
- Wend
- End Sub
复制代码
因为它没有支持支持 Windows.Sleep 这样的命令,时间跳跃单位为零,仅仅依靠反复的循环来达到拖延时间。但目前我没有更好的方法来实现这一功能。不知道老九和 asbai 兄弟可否有高见? |
|