Not enough timers available

      最近有客户反映说出现Not enough timers available错误,发现是标准TTimer报出来的,只知道是API函数SetTimer失败了,研究了一下delphi中TTimer控件,没有发现什么问题,实现方式是通过创建一个隐藏窗口捕获WM_TIMER消息触发timer事件;其实这个timer在程序中用法很简单,而且只在主界面上用了一个,当用户点击一下操作时才出发timer事件,结果还是有几个用户返回错误报告,有点摸不着头脑,在我机子上大量测试不会出现同样的问题,不好找出问题的原因,于是就搜索大量的资料,总结搜集的资料如下

(1)内存释放问题,经过测试,这个问题确实会出现这个错误,比如timer放到一个窗口上,当窗口释放完后忘记设置为nil的情况,这时再去设置timer的一些属性(Enabled),设置timer会调用SetTimer函数,由于窗口释放的时候把隐藏窗口释放了,这时SetTimer传入的窗口句柄就无效了,从而导致函数失败.所以得出窗口句柄无效是导致错误的根本原因,但是我在程序中只用了一个Timer,而且是主程序界面上用的.应该不会是资源释放的问题.

(2)在google搜索时,终于找到一个和我遇到相同问题的老外,http://groups.google.com/group/borland.public.delphi.winapi/msg/8cc15b17a8fe7d4b,上面也是说

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值