+ -
当前位置:首页 → 问答吧 → SetTimer的超时问题

SetTimer的超时问题

时间:2011-11-25

来源:互联网

我使用SetTimer(NULL,NULL,350,drawcallback)来周期的执行某件事,如果此事情没有做完,而定时器时间又到了,这样windows机制会怎么处理?
会丢弃没执行完的,开始新的;还是继续执行,直到结束。

作者: yanzi2907   发布时间: 2011-11-25

SetTimer只是到了时间就通知系统执行

像公交车5分钟就发一次车,其他的就不管了

作者: lgstudyvc   发布时间: 2011-11-25

引用 1 楼 lgstudyvc 的回复:

SetTimer只是到了时间就通知系统执行

像公交车5分钟就发一次车,其他的就不管了

++

作者: chunyou128   发布时间: 2011-11-25

会被延后,定时器的优先级是最低的,如果有其它的消息窗口就先处理其它的。
如果你设置一个定时器,在窗口上画一个球,每200毫秒让它左移一个像素,
你会看到在你移动鼠标时球的移动速度会变慢

作者: woxoxow   发布时间: 2011-11-25

肯定是继续执行,直到结束。这种情况就是相当于定时器的执行周期不准了。

作者: lghndyz   发布时间: 2011-11-25

引用 4 楼 lghndyz 的回复:
肯定是继续执行,直到结束。这种情况就是相当于定时器的执行周期不准了。

这样看来,如果每次都超时,那么就会一直累积下去,会发现定时器的回调函数的执行时间原来越长,是这样吗?

作者: yanzi2907   发布时间: 2011-11-28

我的程序是循环执行的,就是根据导入的数据,程序运行,当数据用到最后时,程序不结束,而是再重新开始,每次的循环都是一样的。
程序运行第二遍时还不卡,到第三遍以后就会出现卡的想象。
每次循环一遍结束时都会删掉本定时器,再重新创建一个,那么上次循环时定时间累积的任务,应该不会影响本次循环吧

作者: yanzi2907   发布时间: 2011-11-28

你这个情况应该考虑优化回调函数的执行效率

作者: xianglitian   发布时间: 2011-11-28

引用 5 楼 yanzi2907 的回复:

引用 4 楼 lghndyz 的回复:
肯定是继续执行,直到结束。这种情况就是相当于定时器的执行周期不准了。

这样看来,如果每次都超时,那么就会一直累积下去,会发现定时器的回调函数的执行时间原来越长,是这样吗?
据我理解,没有累积的意思,设置执行周期是1秒的话,实际使用时间需要10秒的话,那你设置的定时器就相当于执行周期是10秒的定时器!!

作者: lghndyz   发布时间: 2011-11-28

TIMER很耗资源

作者: sichuanpb   发布时间: 2011-11-28

引用 7 楼 xianglitian 的回复:
你这个情况应该考虑优化回调函数的执行效率

回调函数的执行的确需要花费很长时间。

作者: yanzi2907   发布时间: 2011-11-28

引用 8 楼 lghndyz 的回复:
引用 5 楼 yanzi2907 的回复:

引用 4 楼 lghndyz 的回复:
肯定是继续执行,直到结束。这种情况就是相当于定时器的执行周期不准了。

这样看来,如果每次都超时,那么就会一直累积下去,会发现定时器的回调函数的执行时间原来越长,是这样吗?
据我理解,没有累积的意思,设置执行周期是1秒的话,实际使用时间需要10秒的话,那你设置的定时器就相当于执行周期是10秒的定时器!……

这样看来 每次的循环时间应该是一样的,但显示却不是如此呀 
自己在找原因吧

作者: yanzi2907   发布时间: 2011-11-28