我在使用TServerSocket控件的时候想实现这样一个功能。
我的程序接受一个程序发送过来的数据。当触发TServerSocket控件的Read事件的时候,我想先不使用ReceiveBuf来读去数据,而是等到我做其他的事情完毕以后在读去数据,所以我在这里使用了WaitForSingleObject让程序在这里等待,我去做别的事情,可是我发现WaitForSingleObject在这里根本就不起作用,不知为什么??
我的代码是这样的!!
FormCreate(Sender: TObject);
begin
  MacID:=0;
  //CreateEvent();
  ServerReadEvent:=CreateEvent(nil,true,true,nil);
  hThread:=CreateThread(Nil,0,@SendClient,Nil,0,ThreadID); //创建一个发送缓存的线程
end;ClientProxyRead(Sender: TObject;
  Socket: TCustomWinSocket);
var
  WaitReturn : DWord ;
begin
  WaitReturn := WaitForSingleObject(ClientReadEvent,INFINITE) ;
  //读取数据  
end;
function SendClient():Integer;stdcall;
begin
  while true do
  begin  
   ....
   SetEvent(ClientReadEvent);
  end;
end;现在是在WaitReturn := WaitForSingleObject(ClientReadEvent,INFINITE) ;
  //读取数据
的时候系统没有停在那里等待,而是直接运行下去了!这是为什么呢??