我的程序的目的是,将接收到的信息发送给另一个程序。但是在发送的时候,只能等到发送成功以后,才能继续从TClientSocket的OnRead事件中读取下一个信息。所以我使用了下面的代码!var
  WaitReturn : DWord ;
begin
  WaitReturn := WaitForSingleObject(HSem,INFINITE) ;
  rec_bytes:=Socket.ReceiveBuf(rec_buffer,4096);可是在运行的时候却发现,在执行rec_bytes:=Socket.ReceiveBuf(rec_buffer,4096);的时候总是触发OnError事件。但是当我将WaitReturn := WaitForSingleObject(HSem,INFINITE) ;注释掉以后程序运行正常。
这是为什么呢?
(我在执行WaitForSingleObject(HSem,INFINITE) ;代码之前已经使用过ReleaseSemaphore(HSem, 1, Nil);函数了!)