В C# Поток.Чтение с таймаутом

У меня есть этот 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+"rn");
                streamWriter.Flush();

            }

Как установить тайм-аут для метода Read ()? спасибо

2 ответов


Если это System.IO.StreamReader, затем установите его на BaseStream:

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

вам нужно иметь дело с базовым потоком. Таким образом, если вы используете TcpClient, вы можете просто установить ReceiveTimeout:

на ReceiveTimeout свойство определяет количество времени, которое Метод Read будет блокировать, пока он не сможет получать данные. Это время измеряется в миллисекундах. Если тайм-аут истекает до чтения успешно завершается, TcpClient создает исключение IOException. Нет тайм-аут по умолчанию.

 tcpClient.ReceiveTimeout = 5000;