使用定时器多次产生messagebox,该如何解决

使用定时器多次产生messagebox
一个窗口,上面有个定时器,每隔5秒调用一次Form1.ShowMessageBox{MessageBox(...)},过一会儿就出现很多MessageBox。
我想知道,如果定时器直接调用该函数的话,定时器怎么不会被阻塞。
如果是发送消息给Form1,Form1应该已经卡在第一个Messagebox了,为什么还能显示后面的Box?

------解决方案--------------------
MessageBox只会阻塞父窗口的部分消息
------解决方案--------------------
是不是产生的是非模态对话框
------解决方案--------------------
真聪明
------解决方案--------------------
探讨

原因很简单:弹出模式对话框,并不阻塞消息队列,所以WM_TIMER还会到达。

想解决:先killtimer,在settimer。

------解决方案--------------------
探讨
MessageBox和主窗口共用一个线程,MessageBox出现时,MessageBox的消息循环会取代原来的消息循环,但系统还是会定时给它产生WM_TIMER消息的,MessageBox的消息循环中会把消息分发到主窗口,我猜的,哈哈~~

------解决方案--------------------
定时器是csrss的raw input thread维护,它用一个master timer控制循环,定时向所有SetTimer的线程设置状态并唤醒等待的线程,你的程序调用GetMessage时会检查定时器状态,如果到时了就返回一个WM_TIMER