我正在编写一个使用套接字的客户端程序。我希望客户端能够异步接收,除非它期待响应,在这种情况下我希望同步接收。
我当前的问题是因为我必须调用socket.BeginReceive,它等待缓冲区中的数据,异步调用总是在同步调用之前发生..
我怎么能暂时停止执行BeginReceive?有没有办法调用EndReceive然后一旦我完成了同步接收,我可以继续不断接收?
答案 0 :(得分:0)
据我所知,没有办法阻止关闭套接字的BeginReceive短路。要完成您要完成的任务,您需要将调用移至完全同步,并将要进行的调用异步放入单独的线程中。然后,当您想要进行额外呼叫时,您可以终止/暂停该线程。您还可以将ReceiveTimeout属性设置为低值并让它继续循环,直到它看到停止请求,例如设置类范围变量。
出于好奇心的缘故,如果您已经异步接收,为什么还要进行同步通话?