解决方案 »
- 16进制读取简单问题
- 非常郁闷!同样的代码为什么数据不能刷新!!求救高手!!
- 简单的问题
- 超难的点阵汉字转换
- 用TADOStoredProc执行存储过程出错
- 数据库中备注型、图像型字段的输入?
- 如何实现不规则的窗体,就想windows mediaplayer一样。
- 最新消息:微软比尔.盖次遭暗杀死亡!
- 有一变量i: integer i:=0;记录程序运行的次数为i:=i+1 可是第二次运行后i就又是0了,怎么办?//争取睡觉前结帐
- 怎样把时间去掉
- 类似这样的表格如何在Delphi窗体中体现呢?
- 【帐号丢了,求帮忙】delphi2010的TIdSSLIOHandlerSocketOpenSSL的问题
你可以一个timer干好几件事。
有四五个timer。还用到了settimer函数
procedure doing();
begin
timer1.enabled := false;
try
timer1.interval := 50000;//任意数。每次不同。代码应该不会错。是加减计算
finally
timer1.enabled := true;//doing开始执行重新计时
end;//doing code.....end;
procedure timer1ontimer(...);
begin
//timer1.enabled := false;//不停止计时。直到doing再次被执行时重新计时
try doing; except end;//设定时间内doing没完成重新执行
end;
这个你都要try finally什么的?
另外,作为单线程,OnTimer里的东西(包括调用的函数)没执行完时,如果不特殊处理,是不会执行其他消息(包括后来的OnTimer)的。
你折腾那些try啥的除了让你的程序逻辑更乱以外没有其它用。
一直用D7,没碰到Timer不稳定情况,消耗时间的不介意放入Timer,开个线程是最好的解决办法
说得有道理。。try doing; except end;//设定时间内doing没完成重新执行
如果ontimer执行doing一直没完成。那下个ontimer就不会发生了。计时就没用了
begin
//timer1.enabled := false;//不停止计时。直到doing再次被执行时重新计时
settimer(handle, 0, 50, @doing);//设定时间内doing没完成重新执行
end;如果改成这样也许就可以了!!!
begin
timer1.enabled := false;
try
timer1.interval := 50000;//任意数。每次不同。代码应该不会错。是加减计算
//doing code.....
finally
timer1.enabled := true;//doing开始执行重新计时
end;end;