向大家汇报INDY的一个怪事:关于ReadTimeOut(0)

  • 主题发起人 主题发起人 aKnightChen
  • 开始时间 开始时间
A

aKnightChen

Unregistered / Unconfirmed
GUEST, unregistred user!
我在中间层服务器上,由于有"多分厂同步数据",所以,需要用到IndyClient,我用一个Timer,在Timer中,使用了IndyClient,这时,虽然我已明明确确地设置了ReadTimeOut,但就是没效果,一直不会触发异常,导致整个程序卡死在这里(ReadLn),后来,我删除:C:/Program Files/Borland/Delphi7/Lib/IdTCPConnection.dcu自已COPY了C:/Program Files/Borland/Delphi7/Source/Indy/IdTCPConnection.pas把它放到我自已的程序目录,(为了是跟踪一下,看看到底卡死在哪),结果,一切正常了.(有ReadTimeOut效果了)怪,我怀疑IdTCPConnection.dcu与IdTCPConnection.pas不是同一个文件编绎出来的.注: delphi7,用系统自带的Indy版本
 
呵呵,indy很好很强大,可惜就是要仔细注意。
 
问题改上了点,不好,还是有10%机会会卡死在ReadLn,真是头晕
 
好像找到原因了,INDY没错,只是我在线程保护里有Repaint,倒致线程无法退出,也就无法释放临界区变量,最后使下一个线程在申请临界时,死掉了.错怪Indy了!
 
这个问题,搞了我三天了.不过,最后搞出来,值!!!!要是这个BUG找不出来,我程序就死定了.服务器会死,客户端写再好也没用呀.
 
后退
顶部