c#流.超时阅读

本文关键字:超时 | 更新日期: 2023-09-27 18:19:08

我有这个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()方法设置超时?由于

c#流.超时阅读

如果这是System.IO.StreamReader,那么在BaseStream上设置它:

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

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

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

 tcpClient.ReceiveTimeout = 5000;