CAsyncSocket的Receive动作过程是怎样的?是否会自动产生一个线程来执行OnReceive消息?
在Socket通信中,发送数据后,要等待返回数据,数据的接收通过OnReceive处理,因此用Event来通知数据收到,如下情形:
mySocket *m_Socket;
//mySocket 是自定义的基于CAsyncSocket的类。包含OnReveice消息
...
m_Socket->Send(&SndMsg, sizeof(SndMsg));
ResetEvent( hReqEvent );
if( WaitForSingleObject( hReqEvent, 2000 ) != WAIT_OBJECT_0 ) return -1;
在OnReceive中,完成接收后用 SetEvent( hReqEvent );来发出通知。
现在的问题是WaitForSingleObject总是失败,程序一直到等待超时后方才转入OnReveice中处理。
是不是我的方法有问题?