2017-06-22 183 views
-1

我正在调查流读取器超时属性。从文档,我不明白,C#Stream.ReadTimeout属性

  • 该属性如何工作?
  • 流读取器超时会发生什么情况?

有人可以解释我这些问题或指出一些比这更好的文档。

https://msdn.microsoft.com/en-us/library/system.io.stream.readtimeout(v=vs.110).aspx

示例代码:

TcpClient client = new TcpClient(serverIP, serverTcpPort); 
Stream s = client.GetStream(); 
StreamReader sr = new StreamReader(s); 
sr.BaseStream.ReadTimeout = 100; 
+0

什么你不是在抓?文档告诉你一切。如果超时,则抛出异常。 – ThePerplexedOne

+0

该文档说它抛出InvalidOperationException,如果它不被支持,什么都没有被写入当它超时会发生什么,我有它在代码中测试,它的行为随机 – SHAHS

+1

要了解文档,你需要阅读*正确的*文档。 Stream的哪个实现正在被使用? 'FileStream'? 'MemoryStream'?转到* that *类的文档,相反,所有可能会显示。 –

回答

1

的文档很清楚地说,并不是每一个流实现ReadTimeout。 Stream的一些子类可以实现这个属性。所以你需要检查子类的文档以了解ReadTimeout的用法。 您的代码段会用的NetworkStream,这是由

Stream s = client.GetStream(); 

微软网站返回的工作确实有这个的NetworkStream类中的一些具体的文档及其ReadTimeout属性,你可以在这里找到: https://msdn.microsoft.com/en-us/library/bk6w7hs8(v=vs.110).aspx

+0

我已经添加了我使用的示例代码,我已经尝试查看不同的流networkStream,IOStream,他们最终都指出了相同的文档页面。 – SHAHS

+0

我已经更新了我的答案,指向您在代码中使用的NetworkStream类的ReadTimeout属性文档。 –

+0

感谢您的帮助:) – SHAHS