OnTimer事件问题(100)

  • 主题发起人 主题发起人 68686688
  • 开始时间 开始时间
6

68686688

Unregistered / Unconfirmed
GUEST, unregistred user!
我在OnTimer事件中执行APPLICATION.ProcessMessages;并且用SHOWMODAL的方式打开一个新窗口,这时OnTimer事件就会暂停下来,直到关闭打开的新窗口关闭后才继续执行,那应该怎么解决这个问题呢?最好是在OnTimer事件可以用APPLICATION.ProcessMessages;非常感谢。
 
首先,Timer不是多线程,然后呢,OnTimer事件就会暂停下来,是因为SHOWMODAL的方式打开一个新窗口.和APPLICATION.ProcessMessages一点关系都没有
 
以SHOWMODAL的方式打开一个新窗口是在其他的过程中,不是在OnTimer事件中,应该OnTimer事件的过程是可以执行的。
 
当主线程占满CPU 时, TTimer 是会停下来的, 既然 TTimer 停下来了, 自然 OnTimer 过程就没在执行..., 那你把 APPLICATION.ProcessMessages 放在 OnTimer 里也没用~~~
 
showmodal的特点就是等待打开的form执行完毕才执行下面的程序要实现楼主的想法,既要新开窗口处于顶层且不能操作别的form,还要继续执行程序,可以这样Ontimer事件:enablewindow(form1.Handle,false);form2.Show;Form2的OnClose事件:enablewindow(form1.Handle,true);
 
timer不是单独的线程,弹出ShowModal窗口也不会影响timer的执行,除非主线程被占
 
弹出ShowModal后,后面的代码不执行form2.showmodal;showmessage('rrr');在form2关闭之前,showmessage不执行
 
Timer 使用的是windows的消息机制,你showmodal了.那么恐怕timer不在执行了吧!用线程实现timer或者show form 而不是 showmodal.然后置顶show 窗体.
 
我把 APPLICATION.ProcessMessages;去掉就没问题了。我想知道原因,有哪位大侠碰到过这种问题呢?我再强调一下 SHOWMODAL 操作不是在OnTimer事件中,而是在其他的过程中。
 
多人接受答案了。
 
后退
顶部