我想知道如何阻止Networkstream.Read()阻塞线程。我有单独的线程,NetworkStream.Read()正在等待来自服务器的数据。假设用户按下某个按钮,将一些数据发送到服务器。但是当其他线程中有NetworkStream.Read()在等待数据时,我不能调用NetworkStream.Write()。我可以每次都锁定NetworkStream,但是NetworkStream.Read()会阻塞线程,所以在读取至少1个字节之前,我不能发送数据。
发布于 2011-07-27 20:05:35
您可以同时发出read和write,如MSDN docs上的文档所述
可以在NetworkStream类的实例上同时执行
读写操作,而无需同步。只要有一个用于写操作的唯一线程和一个用于读操作的唯一线程,读线程和写线程之间就不会有交叉干扰,也不需要同步。
发布于 2011-07-27 18:51:34
您将需要使用非阻塞读取操作,如:http://msdn.microsoft.com/en-us/library/system.net.sockets.networkstream.beginread.aspx所述
发布于 2011-11-11 17:21:09
您可能会查询某些时间段的NetworkStream.DataAvailable属性,如果为真,则只读该属性。如果DataAvailable为true,则对Read的调用将立即返回。这样你就不会阻塞数据流了。
https://stackoverflow.com/questions/6843064
复制相似问题