CAsyncSocket中的OnReceive是否会被另一个OnReceive中断?

时间:2015-04-23 16:07:54

标签: windows mfc

MSDN表示框架会调用OnRecevie来通知此套接字缓冲区中有数据可以通过调用Receive成员函数来检索。如果在OnRecieve运行时可以恢复数据会发生什么?

2 个答案:

答案 0 :(得分:0)

下一个OnReceive()不会在中间调用,因为所有处理都在同一个线程中完成。在内部,这是通过CSocketWnd中的消息泵完成的。如果您认为路上还有另一大块数据,您可以在AsyncSelect()结束时手动调用OnReceive()

答案 1 :(得分:0)

调用接收winsock后,如果有更多数据,则会向您的消息队列发布新消息。这将导致在您的应用程序恢复泵送消息时调用OnReceive。这通常是在您从OnReceive返回后。

但有一个例外。如果在从OnReceive返回之前抽取消息(例如通过调用MessageBox),则可以在仍处于OnReceive时调用OnReceive。所以不要抽信息!