条件beginReceive

时间:2009-09-14 20:32:26

标签: c# sockets asynchronous

我正在编写一个使用套接字的客户端程序。我希望客户端能够异步接收,除非它期待响应,在这种情况下我希望同步接收。

我当前的问题是因为我必须调用socket.BeginReceive,它等待缓冲区中的数据,异步调用总是在同步调用之前发生..

我怎么能暂时停止执行BeginReceive?有没有办法调用EndReceive然后一旦我完成了同步接收,我可以继续不断接收?

1 个答案:

答案 0 :(得分:0)

据我所知,没有办法阻止关闭套接字的BeginReceive短路。要完成您要完成的任务,您需要将调用移至完全同步,并将要进行的调用异步放入单独的线程中。然后,当您想要进行额外呼叫时,您可以终止/暂停该线程。您还可以将ReceiveTimeout属性设置为低值并让它继续循环,直到它看到停止请求,例如设置类范围变量。

出于好奇心的缘故,如果您已经异步接收,为什么还要进行同步通话?