2013-06-20 18 views
9

mam ten StreamReader:C# Stream.Read z limitu czasu

  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(); 

      } 

Jak ustawić limit czasu dla metody read()? dzięki

+0

Czy to jest z TCPClientem? – dsfgsho

Odpowiedz

17

Jeśli jest to System.IO.StreamReader, a następnie ustawić go na BaseStream:

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

Czy masz pojęcie, co jest domyślną wartością limitu czasu? – SHAHS

+0

@SHAHS Nie. Nie jest dla mnie oczywiste, patrząc na źródło, z którego pochodzi ta wartość. Najlepszym, co mogę zasugerować, jest przełamanie tego i zobaczenie. – DonBoitnott

5

Trzeba radzić sobie z podstawowym strumieniem. Tak więc, w przypadku, gdy używasz TcpClient, można po prostu ustawić ReceiveTimeout:

Obiekt ReceiveTimeout określa ilość czasu, że metoda Czytaj zablokuje aż będzie w stanie odbierać dane. Ten czas to mierzony w milisekundach. Jeśli limit czasu wygasa przed zakończeniem odczytu , aplikacja TcpClient zgłasza wyjątek IOException. Domyślnie limit czasu nie wynosi .

tcpClient.ReceiveTimeout = 5000; 
Powiązane problemy