- DOS的定时功能介绍:
- 在DOS操作系统中要用到定时功能的时候一般有两种方法,一种是用一个空循环来延时;二是截获时钟中断。
- 计算机的硬件时钟会以每55ms一次的频率触发8号中断,而在默认的int 08 中断处理程序中有一句调用 int 1ch 的代码,所以截获 int 08h 或者 int 1ch 都可以达到定时的要求。
- 第一种方法的定时效果随计算机主频的不同可能会大不相同,相比之下,第二种方法更为常见。
- windows定时器简介:
- 在应用程序需要使用定时器时,可以用 SetTimer 函数向 Windows申请一个定时器,要求系统在制定的时间以后“通知”应用程序,如果申请成功的话,系统会以制定的时间周期调用 SetTimer函数指定的回调函数,或者向指定窗口发生 WM_TIMER 消息。
- 与DOS操作系统固定以 55ms 的间隔触发中断服务程序相比,SetTimer 函数可以指定的时间间隔更为灵活,以ms为单位,可以指定一个周期为32位整数,将近50天范围的时间周期。
- 但是在具体使用中不要被这个参数所迷惑:由于Windows的定时器同样基于时钟终端的,所以虽然参数单位是ms,但精通还是55ms,如果指定一个小与55ms的周期,不管是1ms,还是54ms,windows最快也只能在每个时钟中断的时候触发这个定时器。
- 使用定时器的另一个要点就是 定时器消息 是一个低级别的消息,这表现在两个方面:
- 首先,Windows 只有在消息队列中没有其他消息的情况才会发送 WM_TIMER消息,如果窗口过程忙于处理某个消息没有返回,使消息队列中有消息积累起来,那么WM_TIMER消息就会被丢弃,在消息队列再度空闲的时候,被丢弃的WM_TIMER消息不会被补发(用一句经典的话来描述:“过去的就让他过去啊”)
- 其次,消息队列中不会有多条WM_TIMER消息,如果消息队列中已经有一条WM_TIMER消息,还没来处理,又到了定时的时刻,那么两条WM_TIMER消息会被合并成一条。
- 由此可见,应用程序不能依靠定时器来保证某件事情必须在规定的时刻被处理,另外,也不能依赖对定时器消息计数来确定已经过去了多少时间。
- Windows定时器的使用:
- 定时器的初始化和关闭方法:
设置多少时间发送一次WM_TIMER消息或多少时间执行一次回调函数。
- 定时器使用方法:
- 定时器的初始化和关闭方法:
win32 6.1 定时器
最新推荐文章于 2025-01-06 12:52:17 发布