1. 精度不高
windows98大概是55ms,Windows NT大概是10ms。
2. WM_TIMER消息可能无法及时处理
WM_TIMER消息和其他消息一样,存放在正常的消息队列之中。如果程序处理其他消息,用了太长的时间,就耽误了WM_TIMER消息的处理,从效果上看就相当于定时器来晚了。
3. WM_TIMER消息可能会有遗漏
这样一来,如果一个windows程序在时间方面有苛刻的要求(例如,测试仪之类的软件),怎么办呢。
“小兵以太网测试仪”采用的是如下的笨方法。
这种方法非常简单,但也确实有效。下面是此方法的伪代码。
interval=x; //所需的时间间隔
next_do_work_time=当前时间;
while (!need_stop)
{
do
{
cur_time=当前时间;
} while (!need_stop && cur_time
if (need_stop) break;
DO_WORK();
next_do_work_time+=interval;
}
需要说明的是,这种方法是很消耗CPU的 :)
- 看不过瘾?点击下面链接!
- dnscrypt怎么用?
- 查找应用软件连接域名真实IP修改Hosts的方法
- Win7纯净版系统High Definition Audio出现噪音对症下药
- 上网拨号提示出错怎么办
- 电源线的小圆柱形物体是什么?
- speedyfox怎么用?