C#Stream.Read超时

时间:2013-06-20 14:14:26

标签: c# sockets timeout streamreader

我有这个streamreader:

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

2 个答案:

答案 0 :(得分:20)

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

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

答案 1 :(得分:6)

您需要处理基础流。因此,如果您使用的是TcpClient,则只需设置ReceiveTimeout:

即可
  

ReceiveTimeout属性确定了该时间量   Read方法将阻塞,直到它能够接收数据。这一次是   以毫秒为单位。如果超时在Read之前到期   成功完成后,TcpClient抛出IOException。没有   默认情况下超时。

 tcpClient.ReceiveTimeout = 5000;