读书人

delphi timer有关问题很简单

发布时间: 2013-03-17 13:48:31 作者: rapoo

delphi timer问题,很简单。
如果程序现在正在执行a事件,timer事件激活了,需要去处理b事件。
程序是怎么运行呢?
是先处理完a事件,再去处理b事件
暂停a事件,先去处理b事件,处理完b,再回来处理a事件。
还是a、b事件同时处理?
[解决办法]
Timer的OnTimer是在主线程中执行的,如果这个时候其他事件正在执行,会等到执行完之后才响应OnTimer的,
如 Button.OnClick执行时,是不会触发OnTimer的,除非在OnClick中执行了Application.ProcessMessages或者其他等同的执行(注意如果OnClick中有执行FormXX.ShowModule不在此范围内)
[解决办法]
Timer 准确讲叫IdleTimer,仅在没有任何任务时才会发生。Timer事件经常会被Windows丢弃。
[解决办法]
正如 kiboisme 所说,timer 在主线程运行,会把程序搞得很沉重,用户体验不好。我一般是用自己写的线程时钟,很简单几行代码,而且可以同时设置多个时间触发点。

读书人网 >.NET

热点推荐