新手,关于IdTCPClient线程运行问题,谢谢解答 ( 积分: 100 )

  • 主题发起人 主题发起人 leoduba
  • 开始时间 开始时间
L

leoduba

Unregistered / Unconfirmed
GUEST, unregistred user!
我现在要实现IdTCPClient线程运行,要求是,建立一个线程读取IdTCPClient数据,读取完数据后,线程自动释放...............然后下次再重新建立线程再读取!请问怎样能使线程在运行一次后自动释放...........另外,怎样使线程运行时不再建立新的线程,十分感谢
 
最简单的方法:
放置一个TIdThreadComponent组件,StopMode=smTerminate,设置Active:=True,然后在它的OnRun方法中读取IdTCPClient的数据.
这时,如果重复设置Active为True,不会建立新线程,此组件管理的线程在执行完后自动释放。
要注意的是,Indy9中的TIdThreadComponent组件在Active前很多线程相关的属性都不能读,因为那时它的Thread为nil,会操作空指针。Indy10则没这个问题。
但我在项目中用Indy10的TCPClient组件出现过问题,后改用indy9了,自己权衡用哪个版本吧。
 
后退
顶部