C#Stream.Read超时

Tob*_*bia 14 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();

            }
Run Code Online (Sandbox Code Playgroud)

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

Don*_*ott 25

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

streamReader.BaseStream.ReadTimeout = 2000;  //milliseconds, so 2 seconds
Run Code Online (Sandbox Code Playgroud)


dsf*_*sho 9

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

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

 tcpClient.ReceiveTimeout = 5000;
Run Code Online (Sandbox Code Playgroud)