关于线程(为什么我用synchronize进不了)

imho888 2005-06-16 03:04:12
TReceiveThread = class(TThread)
private
FMsg: string;
procedure showme;
protected
procedure Execute; override;
end;

var
FThread: TReceiveThread;
procedure TReceiveThread.showme;
begin
showmessage('123456');
end;
procedure TReceiveThread.Execute;
begin
while not Terminated do
begin
if Form1.IdTCPClient1.Connected then
begin
FMsg := Form1.IdTCPClient1.ReadLn;
FThread.Synchronize(showme);
Sleep(100);
end;
end;
end;

为什么不显示123456呢
...全文
96 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
ArFly 2005-06-17
  • 打赏
  • 举报
回复
什么叫再发第二次呀?我没有看到你这个程序当中有发送代码呀。结束是还在运行是不是因为你线程没有结束只结束程序?
imho888 2005-06-17
  • 打赏
  • 举报
回复
为什么我程程序退出的时候线程的execute还在运行,在writeln()出错,我加了判断在连接中运行writeln()还是不行,不知道有什么办法!
imho888 2005-06-16
  • 打赏
  • 举报
回复
莫明其秒,现在又好了,不过还是只能处理一次,我再发第二次就接收不到了,不知道怎么了
imho888 2005-06-16
  • 打赏
  • 举报
回复
我想问一下,为什么我的这个程序只能接收一次数据
fengjn 2005-06-16
  • 打赏
  • 举报
回复
把创建线程的代码页贴出来
imho888 2005-06-16
  • 打赏
  • 举报
回复
一样显示不出来!有一点可以保证,程序可以运行到FMsg := Form1.IdTCPClient1.ReadLn;都没有问题,就是下一步不行。
firstshine 2005-06-16
  • 打赏
  • 举报
回复
把FThread.Synchronize(showme);改成Synchronize(showme);

1,593

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 网络通信/分布式开发
社区管理员
  • 网络通信/分布式开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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