我想知道如何停止Networkstream.Read()
阻塞线程。我有单独的线程NetworkStream.Read()
正在等待来自服务器的数据。假设用户按下某个按钮将一些数据发送到服务器。NetworkStream.Write()
但是当有NetworkStream.Read()
其他线程在等待数据时,我无法调用。NetworkStream
我每次都可以锁定,但NetworkStream.Read()
会阻塞线程,所以在读取至少 1 个字节之前我不能发送数据。
问问题
14434 次
4 回答
7
您可以同时发布read
,write
如MSDN 文档中的文档中所述
可以在 NetworkStream 类的实例上同时执行读取和写入操作,而无需同步。只要写操作有一个唯一线程,读操作有一个唯一线程,读写线程之间就不会相互干扰,也不需要同步。
于 2011-07-27T12:05:34.700 回答
2
您可能会在某些时间段内查询 NetworkStream.DataAvailable 属性,并且仅在其为 true 时才读取。“如果 DataAvailable 为真,则立即返回对 Read 的调用。” 所以你不会阻塞流。
于 2011-11-11T09:21:08.747 回答
2
您将需要使用如下所述的非阻塞读取操作:http: //msdn.microsoft.com/en-us/library/system.net.sockets.networkstream.beginread.aspx
于 2011-07-27T10:51:33.677 回答
0
NetworkStream 类提供了在阻塞模式下通过 Stream 套接字发送和接收数据的方法。有关阻塞与非阻塞套接字的更多信息,请参阅使用异步客户端套接字
于 2011-07-27T10:55:46.410 回答