C# Stream.Read 超时

Posted

技术标签:

【中文标题】C# Stream.Read 超时【英文标题】:C# Stream.Read with timeout 【发布时间】:2013-06-17 10:43:54 【问题描述】:

我有这个流式阅读器:

            Boolean read = false;
            while (wline!="exit")
            

                while (!read || streamReader.Peek() >= 0)
                
                    read = true;
                    Console.Write((char)streamReader.Read());
                
                wline = Console.ReadLine();
                streamWriter.Write(wline+"\r\n");
                streamWriter.Flush();

            

如何设置 Read() 方法的超时时间? 谢谢

【问题讨论】:

这是与 TCPClient 相关的吗? 【参考方案1】:

如果这是System.IO.StreamReader,则将其设置在BaseStream

streamReader.BaseStream.ReadTimeout = 2000;  //milliseconds, so 2 seconds

【讨论】:

你知道什么是默认超时值吗? @SHAHS 否。查看该值的来源对我来说并不明显。我能建议的最好的方法是在上面设置一个断点并查看。【参考方案2】:

您需要处理底层流。因此,如果您使用的是 TcpClient,您可以简单地设置 ReceiveTimeout:

ReceiveTimeout 属性决定了 读取方法将阻塞,直到它能够接收数据。这次是 以毫秒为单位。如果超时在读取之前到期 成功完成,TcpClient 抛出一个 IOException。没有 默认超时。

 tcpClient.ReceiveTimeout = 5000;

【讨论】:

以上是关于C# Stream.Read 超时的主要内容,如果未能解决你的问题,请参考以下文章

C#文件流写入方法

当 Stream.Read() 存在时,StreamReader 的目的是啥?

reader.ReadToEnd 和 Stream.Read 之间的区别

使用 SocketIO 上传文件时,Flask request.stream.read() 正在停止

如果没有发送任何内容,Stream.Read不会返回任何内容

HybridAuth Facebook 登录错误:“无效范围:offline_access、publish_stream、read_friendlists”