Próbowałem odczytać dane z API strumienia Twittera za pomocą C#, a ponieważ czasami API nie zwróci żadnych danych, a ja szukam odpowiedzi w czasie zbliżonym do rzeczywistego, Byłem niezdecydowany, aby użyć na swoim czytniku długości bufora większej niż 1 bajt, na wypadek gdyby strumień nie zwrócił więcej danych na następny dzień lub dwa.Zużywając strumień HTTP bez czytania jednego bajtu na raz
Używam następujący wiersz:
input.BeginRead(buffer, 0, buffer.Length, InputReadComplete, null);
//buffer = new byte[1]
Teraz mam zamiar skalowanie aplikacji w górę, myślę, że rozmiar 1 spowoduje dużo użycie procesora i chcą zwiększyć tę liczbę , ale nadal nie chcę, aby strumień blokował się. Czy możliwe jest przywrócenie strumienia, jeśli w ciągu następnych 5 sekund nie zostanie odczytane więcej bajtów lub coś podobnego?
Nie mogę utrzymać otwieranie i zamykanie połączenia, ponieważ polityk Twittera. Czy możesz podać przykład wykorzystania asynchronicznego zegara wywołania zwrotnego do wcześniejszego zakończenia odczytu? – HenryZhang
@huadianz: Dodano przybliżony przykład, aby dać ci punkt wyjścia. –
Czy funkcja Read zwraca jakiekolwiek dane w buforze, czy te dane zostały utracone? – HenryZhang