vc定时器的意义是中断还是线程?

时间:2021-05-02 00:10:15
  例如,我定义了一个定时器SetTimer(1,10*1000,NULL),那么没事秒进入定时器进行定时事件处理,假如处理此定时事件需要3秒钟,那么在这3秒里我其它的程序是否还运行,其它事件(按钮事件,定时事件,鼠标事件等等)是否还能相应?
  换言之,这个SetTimer()是中断响应还是另开了一个线程?

17 个解决方案

#1


按钮事件,定时事件,鼠标事件好像不能

#2


定时器是线程~

#3


settimer注册了一个时钟,要求windows按这个时间间隔发送wm_timer消息,是在消息循环里处理的。没有开线程。你要自己开,保证其他事件的响应

#4




定时器只是间隔指定的时间产生一个时间消息而已。除非你窗口需要很长时间来处理这个消息,否则定时器对窗口几乎没任何影响。

楼主要分清定时器,和Sleep函数。

如果你调用 Sleep(10*1000)的话,你的窗口会有10秒钟时间失去响应, 但SetTimer()不会。

#5


不好意思,没看清题。如果需要长时间处理的话,最好是开线程。

#6


耗时三秒的事件是在哪个线程中处理的那么哪个线程就会被占用(阻塞)三秒.定时器就是一个闹钟,只是提示时间到了而已.

#7


非中断,非线程,消息而已。

#8


顶顶,大家继续,各种答案纷纷来报到哦

#9


假如处理此定时事件需要3秒钟,那么在这3秒里我其它的程序是否还运行,其它事件(按钮事件,定时事件,鼠标事件等等)是否还能相应?
==============
不响应,定时器只是系统发送WM_TIMER消息,而窗口处理程序仅是处理消息,在消息处理过程中不会响应其它的事件。

#10


顶顶,大家继续,各种答案纷纷来报到哦

#11


引用 10 楼 qhrzh 的回复:
顶顶,大家继续,各种答案纷纷来报到哦

看了一下前面的答案,除了个别说法之外,其他的人的说法都是一样的,也就是不响应。

#12


感觉没必要解释了

#13


 消息队列的处理

#14


引用 7 楼 pzhuyy 的回复:
非中断,非线程,消息而已。


UP

#15


是消息,消息有先后,当消息是定时器该执行了,那么其他的消息要等到他完成后才被执行到!

#16


定时器是消息机制,非线程。

#17


   消息,其它事件能响应,只是不能和定时器冲突。

#1


按钮事件,定时事件,鼠标事件好像不能

#2


定时器是线程~

#3


settimer注册了一个时钟,要求windows按这个时间间隔发送wm_timer消息,是在消息循环里处理的。没有开线程。你要自己开,保证其他事件的响应

#4




定时器只是间隔指定的时间产生一个时间消息而已。除非你窗口需要很长时间来处理这个消息,否则定时器对窗口几乎没任何影响。

楼主要分清定时器,和Sleep函数。

如果你调用 Sleep(10*1000)的话,你的窗口会有10秒钟时间失去响应, 但SetTimer()不会。

#5


不好意思,没看清题。如果需要长时间处理的话,最好是开线程。

#6


耗时三秒的事件是在哪个线程中处理的那么哪个线程就会被占用(阻塞)三秒.定时器就是一个闹钟,只是提示时间到了而已.

#7


非中断,非线程,消息而已。

#8


顶顶,大家继续,各种答案纷纷来报到哦

#9


假如处理此定时事件需要3秒钟,那么在这3秒里我其它的程序是否还运行,其它事件(按钮事件,定时事件,鼠标事件等等)是否还能相应?
==============
不响应,定时器只是系统发送WM_TIMER消息,而窗口处理程序仅是处理消息,在消息处理过程中不会响应其它的事件。

#10


顶顶,大家继续,各种答案纷纷来报到哦

#11


引用 10 楼 qhrzh 的回复:
顶顶,大家继续,各种答案纷纷来报到哦

看了一下前面的答案,除了个别说法之外,其他的人的说法都是一样的,也就是不响应。

#12


感觉没必要解释了

#13


 消息队列的处理

#14


引用 7 楼 pzhuyy 的回复:
非中断,非线程,消息而已。


UP

#15


是消息,消息有先后,当消息是定时器该执行了,那么其他的消息要等到他完成后才被执行到!

#16


定时器是消息机制,非线程。

#17


   消息,其它事件能响应,只是不能和定时器冲突。