用TIdTcpClient的ReadBuffer方法时如何判断超时?(200分)

  • 主题发起人 主题发起人 freevoice
  • 开始时间 开始时间
F

freevoice

Unregistered / Unconfirmed
GUEST, unregistred user!
小弟正在做一个远程监控系统,上位机和下位机需要不断的通信,我用了TIdTcpClient组件。我想请教:如果程序在运行到ReadBuffer()方法时,网络断开,有没有办法让ReadBuffer()超过一定的时间就退出?不然的话就会死等到那儿,会影响程序其它部分的。
或者有没有其他好方法?
谢谢。
 
一般是建立线程来完成取数据.
procedure TSendStreamThread.Execute;
begin
while not Terminated do
begin
if FReady then
begin
if GetTickCount - FTick > 120000 then
Terminate; //超时退出 FTick 可以在readbuffer有读到数据时赋值
end;
Sleep(100);
end;
end;
 
TIdTcpClient不是有READTIMEOUT属性吗
 
我已经把有关Tcp读写的函数都放到一个子线程里了,您的意思是再开一个子线程?有没有不用再开线程的方法呢?
谢谢
 
To Milpas:
我真是太蠢了,谢谢你的指点!180分相送
 
多人接受答案了。
 
后退
顶部