|
|
导航: |
论坛 -> DELPHI技术
斑竹:liumazi,sephil |
|
作者: |
snpl (snpl) |
★☆☆☆☆ |
-
|
盒子活跃会员 |
|
2004/7/26 10:04:34 |
标题: |
|
加入我的收藏 |
楼主: |
我有一定时程序,timer.inteval:=5000,enabled:=true,如果上一次procedure TF_proc.exec_timer1Timer(Sender: TObject)的处理时间>5000,是不是下一次timer已触发?如果是这样,那么这其中就存在一个处理重复的问题,请问如何避免这种情况? 谢谢
----------------------------------------------
- |
作者: |
|
2004/7/26 10:23:00 |
1楼: |
这就看你设定的时间间隔是否合理了,如果处理过程耗费的时间明显超出时间间隔,要么优化处理过程,要么调整时间间隔。
----------------------------------------------
敬请光临 学海Delphi站 http://delphi.studysea.net 学海无涯,让我们共同成长!
|
作者: |
cc_cn (cc_cn) |
★☆☆☆☆ |
-
|
盒子活跃会员 |
|
2004/7/26 10:41:01 |
2楼: |
有意思,还真没遇到过这种情况,希望有人懂的说说看呢~~~~ 不过我各人认为应该不影响,计算机应该执行完代码后再触发一次timer(仅是个人意见,不算数的啊~~~~)
----------------------------------------------
-
|
作者: |
|
2004/7/26 11:03:03 |
3楼: |
哦,上面说法有漏洞,timer中如果没调用过Application.ProcessMessages,那就等到过程执行完才能激发下一次执行。
----------------------------------------------
敬请光临 学海Delphi站 http://delphi.studysea.net 学海无涯,让我们共同成长!
|
作者: |
snpl (snpl) |
★☆☆☆☆ |
-
|
盒子活跃会员 |
|
2004/7/26 13:42:21 |
4楼: |
我是这样处理不知是否可以? procedure TF_proc.exec_timer1Timer(Sender: TObject); begin timer1.enabled:=false; ....... timer1.enabled:=true; end;
----------------------------------------------
-
|
作者: |
|
2004/7/26 14:45:28 |
5楼: |
应该不需要这么做吧。只要你在Timer处理过程中没调用Application.ProcessMessages,就不会出现处理过程重叠的现象,你可以测试一下。
----------------------------------------------
敬请光临 学海Delphi站 http://delphi.studysea.net 学海无涯,让我们共同成长!
|
作者: |
cc_cn (cc_cn) |
★☆☆☆☆ |
-
|
盒子活跃会员 |
|
2004/7/26 14:45:44 |
5楼: |
呵呵,也是个办法,这样肯定是不会出错的~~~~
----------------------------------------------
-
|
|