我正在编写一个使用Sockets的客户端程序。我希望客户端异步接收,除非它正在等待响应,在这种情况下,我希望同步接收。
我目前的问题是,因为我必须调用socket.BeginReceive,它会一直等到缓冲区中有数据,所以异步调用总是在同步调用之前发生。
如何临时停止BeginReceive的执行?有没有一种方法可以调用EndReceive,然后一旦我完成同步接收,我就可以继续异步接收?
发布于 2009-09-14 21:49:49
据我所知,没有办法阻止BeginReceive short关闭套接字。要完成您想要完成的任务,您需要将您的调用移至完全同步,并将您想要进行的异步调用放入单独的线程中。然后,当您想要进行额外的调用时,可以终止/暂停该线程。您还可以将ReceiveTimeout属性设置为较低的值,并让它继续循环,直到它看到停止请求为止,就像设置类范围变量一样。
出于好奇心,既然已经在异步接收,为什么还要进行同步调用呢?
https://stackoverflow.com/questions/1423762
复制相似问题