高精度另类超级延时模块

易语言 2020-08-20 13:11:47

高精度另类超级延时模块

.子程序 超级延时, , 公开, 高精度延时,cpu占用低,窗口不卡死,一次最大可延时几年 (无返回值)
.参数 延时间隔, 整数型, , 1000微秒 = 1毫秒 ; 1000毫秒 = 1秒
.参数 延时单位, 整数型, 可空, 可空:毫秒 0 毫秒 1 微秒 2 秒 3 分 4 小时 5 天
.局部变量 hTimer, 整数型
.局部变量 int64, LARGE_INTEGER
.局部变量 计次, 整数型

.判断开始 (延时单位 = 1)
int64.QuadPart = -10 × 延时间隔
hTimer = CreateWaitableTimerA (0, 假, 0)
SetWaitableTimer (hTimer, int64, 0, 0, 0, 假)
.判断循环首 (MsgWaitForMultipleObjects (1, hTimer, 假, #INFINITE, #QS_ALLINPUT) ≠ #WAIT_OBJECT_0)
处理事件 ()
.判断循环尾 ()
_关闭对象 (hTimer)
返回 ()
.判断 (延时单位 = 0)
延时单位 = 1
.判断 (延时单位 = 2)
延时单位 = 1000
.判断 (延时单位 = 3)
延时单位 = 1000 × 60
.判断 (延时单位 = 4)
延时单位 = 1000 × 60 × 60
.判断 (延时单位 = 5)
延时单位 = 1000 × 60 × 60 × 24
.默认

.判断结束
int64.QuadPart = -10 × 延时间隔 × 1000 × 延时单位
hTimer = CreateWaitableTimerA (0, 假, 0)
SetWaitableTimer (hTimer, int64, 0, 0, 0, 假)
.判断循环首 (MsgWaitForMultipleObjects (1, hTimer, 假, #INFINITE, #QS_ALLINPUT) ≠ #WAIT_OBJECT_0)
处理事件 ()
.判断循环尾 ()