当我发送一个数据包出去,
因为,数据发送出去也要再通过设备的转发,
所以,我想在发送后,等待一下,再查看是否有返回,请问有没有什么好的方法,先谢谢了接收是在线程里的,但发送没有在线程里,

解决方案 »

  1.   

    我现在的做法是
          application.ProcessMessages;
          sleep(1);
    可是有的时候等待的时间可能会有一秒,
    这样应该不好
      

  2.   

    使用异步消息或者事件通知模式。或者在recv当中设置好超时时间。
    Sleep最好每次15毫秒,Sleep(15),如果你需要等待时间长的话,可以使用循环。
    I := 1500;//1.5s;while (I > 0) and (Not ReceivedAll) do begin
      Application.ProcessMessage;//如果是在子线程当中就不需要
      Sleep(15);
      Dec(I,15);
    end;
    if Not ReceivedAll then begin
      //超时
      Exit;
    end;//正常...