时间太短了。
而且,Socket的处理本身就已经很费时间了,尤其是出现问题时,经常没有响应。
建议采用线程发送数据,而不是用Timer控件。

解决方案 »

  1.   

    用线程? 好像也不行。
    我new了一个线程,并在构造函数中new了TClientSocket、TADOQuery,
    然后将原先Timer的OnTimer事件代码整理写成一个函数,作为线程一个方法,
    并且在Execute()中使用Synchronize调用该方法,结果还会造成上述错误。而且我仔细想过,由于我的这个程序是运行在服务器上的,并且需要每时每刻
    检查数据库发送记录并及时发送,使用线程的话我就得在Execute()中搞个
    while循环,这样效率似乎更低。本人愚笨,还请老兄指点迷津! 先谢了! 
    我的QQ : 14259224
    email:   [email protected]
      

  2.   

    改用Blocking方式发送吧。这样好控制些。
    发送的数据不会积压在缓冲区中。
      

  3.   

    如果改成Blocking发送,那我的服务器程序是不是要用线程写?
      

  4.   

    你应在定时器OnTimer中的先关定时器:
    Timer.Enabled := false;在onconnect中发完数据再打开定时器:
    Timer.Enabled := true;
      

  5.   

    TO:julang(巨浪)
    如果你的程序只是完成这个功能,或者在界面上要求不高的话,
    完全可以不用线程,只用定时器发数据就是了.