关于线程的问题,急急急!!

lousie 2003-08-27 02:39:39
我在线程中的程序为
i:=0;
while not Terminated do begin
while i<=5 do begin
Form1.finish:=false;
t:=StrToInt(Form1.Edit5.Text);//窗口输入的数据
Form1.FBeamUp(Form1.t);
//一个串口通信的函数,当执行完成Form1.finish = true
,但执行完成需要一定的时间
while not Form1.finish do
Application.ProcessMessages;
i:=i+1;
end
end;
我的本意是希望是串口实现5次,但是具体实现的结果是,还没有等上一次的串口执行完成,下一次的串口通信又开始了,Application.ProcessMessages好象不起什么作用,但是单步调试的时候,又完全符合我的要求,有什么办法能解决这个问题,是不是线程由计算机直接分配时间段原因,我知道这个问题有些复杂,但是迫切希望高手们行行好,帮帮我吧!
...全文
20 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
LKJ99 2003-08-27
  • 打赏
  • 举报
回复
1、应该单独开一线程来执行Form1.FBeamUp(Form1.t);
并且利用阻塞等同步方法防止此线程同时执行多次!
2、调用Form1.FBeamUp(Form1.t)是不是用这个套套好一点!
Synchronize( )

5,386

社区成员

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

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