使用定时器多次产生messagebox,该如何解决
使用定时器多次产生messagebox
一个窗口,上面有个定时器,每隔5秒调用一次Form1.ShowMessageBox{MessageBox(...)},过一会儿就出现很多MessageBox。
我想知道,如果定时器直接调用该函数的话,定时器怎么不会被阻塞。
如果是发送消息给Form1,Form1应该已经卡在第一个Messagebox了,为什么还能显示后面的Box?
------解决方案--------------------
MessageBox只会阻塞父窗口的部分消息
------解决方案--------------------
是不是产生的是非模态对话框
------解决方案--------------------
真聪明
------解决方案--------------------
------解决方案--------------------
------解决方案--------------------
定时器是csrss的raw input thread维护,它用一个master timer控制循环,定时向所有SetTimer的线程设置状态并唤醒等待的线程,你的程序调用GetMessage时会检查定时器状态,如果到时了就返回一个WM_TIMER
一个窗口,上面有个定时器,每隔5秒调用一次Form1.ShowMessageBox{MessageBox(...)},过一会儿就出现很多MessageBox。
我想知道,如果定时器直接调用该函数的话,定时器怎么不会被阻塞。
如果是发送消息给Form1,Form1应该已经卡在第一个Messagebox了,为什么还能显示后面的Box?
------解决方案--------------------
MessageBox只会阻塞父窗口的部分消息
------解决方案--------------------
是不是产生的是非模态对话框
------解决方案--------------------
真聪明
------解决方案--------------------
------解决方案--------------------
------解决方案--------------------
定时器是csrss的raw input thread维护,它用一个master timer控制循环,定时向所有SetTimer的线程设置状态并唤醒等待的线程,你的程序调用GetMessage时会检查定时器状态,如果到时了就返回一个WM_TIMER