首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >c# NetworkStream write()和read()

c# NetworkStream write()和read()
EN

Stack Overflow用户
提问于 2011-07-27 18:48:16
回答 4查看 14.2K关注 0票数 5

我想知道如何阻止Networkstream.Read()阻塞线程。我有单独的线程,NetworkStream.Read()正在等待来自服务器的数据。假设用户按下某个按钮,将一些数据发送到服务器。但是当其他线程中有NetworkStream.Read()在等待数据时,我不能调用NetworkStream.Write()。我可以每次都锁定NetworkStream,但是NetworkStream.Read()会阻塞线程,所以在读取至少1个字节之前,我不能发送数据。

EN

回答 4

Stack Overflow用户

发布于 2011-07-27 20:05:35

您可以同时发出readwrite,如MSDN docs上的文档所述

可以在NetworkStream类的实例上同时执行

读写操作,而无需同步。只要有一个用于写操作的唯一线程和一个用于读操作的唯一线程,读线程和写线程之间就不会有交叉干扰,也不需要同步。

票数 7
EN

Stack Overflow用户

发布于 2011-07-27 18:51:34

您将需要使用非阻塞读取操作,如:http://msdn.microsoft.com/en-us/library/system.net.sockets.networkstream.beginread.aspx所述

票数 2
EN

Stack Overflow用户

发布于 2011-11-11 17:21:09

您可能会查询某些时间段的NetworkStream.DataAvailable属性,如果为真,则只读该属性。如果DataAvailable为true,则对Read的调用将立即返回。这样你就不会阻塞数据流了。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6843064

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档