Lazarus中文社区

 找回密码
 立即注册(注册审核可向QQ群索取)

QQ登录

只需一步,快速开始

Lazarus IDE and 组件 下载地址版权申明
查看: 3592|回复: 0

在Lazarus中使用时钟(TTimer)的一点点体会,与大家分享

[复制链接]

该用户从未签到

发表于 2011-6-8 23:54:46 | 显示全部楼层 |阅读模式
今天调一个程序,程序的功能是在通过网络启动一个时钟,使用一个线程专门从网络上接收数据,当收到的数据是时钟开启命令后就打开时钟(Timer1.Enabled := True)。这样简单的一个程序我竟然调试了三四个小时才调通,原因不是网络接收,也不是其它的,而是时钟不管怎么搞都不运行。最后查出来原因是因为Timer1.Enabled := True这行是在线程中执行,这样执行不行,所以我就把Timer1.Enabled := True做到一个函数中,这个函数叫SetTimerEnable,然后这样调用Synchronize(@SetTimerEnable)。这样一搞,竟然可以正常运行了。总的来说就是要在子线程中调用TTimer的相关方法就必须要使用同步语句才行。

函数SetTimerEnable如下
procedure SetTimerEnable();
begin
  Timer1.Enabled := True;
end;
回复

使用道具 举报

*滑块验证:

本版积分规则

QQ|手机版|小黑屋|Lazarus中国|Lazarus中文社区 ( 鄂ICP备16006501号-1 )

GMT+8, 2025-5-2 20:57 , Processed in 0.025639 second(s), 10 queries , Redis On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表