想和大家讨论一下 Delphi的定时器Timer的使用

elfcandy 2006-09-12 09:23:31
我的程序开了三个定时器,窗体加载时一个为False,另两个为True,我在按下一个按钮时,将False的定时器打开,但是我可以明显地感觉到这个定时器里的事件没有执行,而且很郁闷的是,它有时候可以,有时候不行。不知道为什么?我认为是不是定时器之间有冲突?若果我改用多媒体定时器,多媒体定时器的优先级是不是比控件式的Timer高呢?
谢谢各位能给我仔细缝隙一下Timer定时器的工作原理和过程.
...全文
1622 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
nathan8467 2006-09-21
  • 打赏
  • 举报
回复
用线程,把timer锁住
elfcandy 2006-09-21
  • 打赏
  • 举报
回复
现在的现象是,用两个定时器,一个多媒体定时器,一个TIMER。打开 TImer时可以明显地看见多媒体定时器的取法间隔增大,这是为何呢?大家继续讨论。呵呵
flyfishcn 2006-09-19
  • 打赏
  • 举报
回复
UP
sdzbbz 2006-09-14
  • 打赏
  • 举报
回复
我的代码里也有好多timer,用线程就能避免多用timer吗?能否讲清楚一些呢?
AOCOC 2006-09-13
  • 打赏
  • 举报
回复
DunDao(所有这一切都是会有报应的):
定时器完全是在进程的主线程中工作,受消息循环的控制,只是在需要的时候给消息队列插入一条消息,如果上一次触发时的消息没有处理完,即使时间到了也不会在此期间触发第二次,因此精度是得不到保证的。。。学习。。
DunDao 2006-09-13
  • 打赏
  • 举报
回复
定时器完全是在进程的主线程中工作,受消息循环的控制,只是在需要的时候给消息队列插入一条消息,如果上一次触发时的消息没有处理完,即使时间到了也不会在此期间触发第二次,因此精度是得不到保证的。定时器的精度不够不是因为触发的问题,而是触发后通过消息队列,到达的时候已经被延迟,如果系统不忙,这个延迟时间会很小,如果系统忙,这个延迟就无法预料了,但无论如何这个延迟是存在的,当然大部分情况下我们是能够容忍的,也能够满足日常应用,但要是进行实时通讯等定时器就不够用了。
多媒体定时器从精度上讲会好很多。
wudi_1982 2006-09-13
  • 打赏
  • 举报
回复
少用timer,用线程来做。用timer处理一些教学用的东西,或者精度要求不高,处理不复杂的东西还可以。
elfcandy 2006-09-13
  • 打赏
  • 举报
回复
谢谢上面的各位,我今天又试了一下,我觉得可能是程序写的时候对几个定时器的操作的逻辑不好,而造成的,我哦也准备使用多媒体定时器,多媒体定时器的优先级比Timer高吗?
zzzl 2006-09-13
  • 打赏
  • 举报
回复
如果觉得不好用,可以试试cnpack(www.cnpack.org)的Timer
ly_liuyang 2006-09-13
  • 打赏
  • 举报
回复
Timer是同一个线程中的~
nevergetwin 2006-09-13
  • 打赏
  • 举报
回复
你把代码贴上来,定时器不可能冲突的,我的程序用了十几个都没问题
xjjrocker 2006-09-13
  • 打赏
  • 举报
回复
一定是你的代码触发不对,我在基类上放了一个Time控件,在产生的四个窗体上都调用,各自执行自己的代码都没问题呢,只是四个窗口的触发都用不同的参数来触发,这样以区分来自不同的窗体的事件。
elfcandy 2006-09-13
  • 打赏
  • 举报
回复
但确实有这种情况,是不是定时器之间有冲突?
postren 2006-09-13
  • 打赏
  • 举报
回复
怎么可能呢?
lian587 2006-09-13
  • 打赏
  • 举报
回复
up

5,386

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧