16

我有这个流媒体阅读器:

            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() 方法设置超时?谢谢

4

2 回答 2

28

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

streamReader.BaseStream.ReadTimeout = 2000;  //milliseconds, so 2 seconds
于 2013-06-20T14:25:38.913 回答
12

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

ReceiveTimeout属性确定 Read 方法在能够接收数据之前将阻塞的时间量该时间以毫秒为单位。如果在读取成功完成之前超时到期,则 TcpClient 将引发 IOException。默认情况下没有超时。

 tcpClient.ReceiveTimeout = 5000;
于 2013-06-20T14:26:16.860 回答