INDY的TIDTCPSERVER在有客户端连接时关闭服务器程序时,总是报线程超时,该如何解决?(100分)

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

lufang

Unregistered / Unconfirmed
GUEST, unregistred user!
INDY的TIDTCPSERVER在有客户端连接时关闭服务器程序时,总是报线程超时,该如何解决?
在大富翁里找的很长时间了,没有完全解决问题的方案,请高手指教
 
是在调试环境,还是软件发布后运行状态?如果是调试环境,你就不考虑了。
 
在idTCPServer.active:=false之前检查一下idTCPServer的监听线程队列是否关闭,因为你是强制性断开与客户端的连接,监听线程还在工作,突然关掉服务端当然会报线程超时。
List:TList;
List:=idTCPServer.Threads.LockList;
try
for i:=0 to List.Count-1 do
TidPeerThread(List.Items).connection.disconnect;
finally
idTCPServer.Threads.unLockList;
end;
idTCPServer.Active:=false;
 
后退
顶部