web-dev-qa-db-ja.com

タイムアウト付きのC#Stream.Read

私はこのストリームリーダーを持っています:

            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()メソッドのタイムアウトを設定する方法ありがとう

15
Tobia

これがSystem.IO.StreamReader、次にBaseStreamに設定します。

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

基になるストリームを処理する必要があります。したがって、TcpClientを使用している場合は、ReceiveTimeoutを設定するだけで済みます。

ReceiveTimeout プロパティは、Readメソッドがデータを受信できるようになるまでブロックする時間を決定します。この時間はミリ秒単位で測定されます。読み取りが正常に完了する前にタイムアウトになると、TcpClientはIOExceptionをスローします。デフォルトではタイムアウトはありません。

 tcpClient.ReceiveTimeout = 5000;
7
dsfgsho