我认为你完全可以把while语句写到一个timer里去procedure Tform1.timer1timer(XXXX);  //不好意思,忘了具体是怎么写的
begin
try
cs1.sendtext('aaa');
  except
    on e:ESocketError do
      showmessage('error');
end;然后在另一个过程或事件中触发这个timer事件不就行了,timer是个多线程控件,所以肯定不会出现死机状:),而且可以随时修改时间。

解决方案 »

  1.   

    建立一个连接是需要时间的(需要三次握手),在广域网尤其如此。在调用Open后,将开始连接过程。在连接成功之后,将触发OnConnect事件(可能是Open若干秒后),在此事件的处理过程中SendText,或做一标志量标识已连接,在发送时判断此标志量,即可保证安全发送。(连接断开将触发OnDisconnect事件)连接错误将触发OnError事件,其中的ErrorEvent表示错误原因,可处理错误。可将ErrorCode置0,则不会引起异常(自己处理)。gameboy999的方法不敢苟同,因SendText也是异步的,这样不能捕获所有异常。希望对你有帮助。
      

  2.   

    请问,真的“timer是个多线程控件”吗?
      

  3.   

    to suzg:
       我只是就他的那个sleep语句用法而言,并没有针对那个socket连接,因为我没有做过这种有服务器端的socket连接,所以我不太懂。见笑了。