WebRequest GetResponseStream read bytes

Я пытаюсь прочитать байты из ResponeStream, но как я могу сказать, что нужно подождать данных?

Если я установлю точку останова после GetResponseStream и подожду несколько секунд, все работает нормально. Использование StreamReader.ReadToEnd() тоже работает нормально, но я хочу читать байты сам.

byte[] response = null;

int left = 0;
int steps = 0;
int pos = 0;

int bytelength = 1024;

OnReceiveStart();

using (HttpWebResponse webResponse = (HttpWebResponse)webRequest.GetResponse()) {
    using (Stream sr = webResponse.GetResponseStream()) {

        response = new byte[(int)webResponse.ContentLength];

        left = (int)webResponse.ContentLength % bytelength;
        steps = (int)webResponse.ContentLength / bytelength;
        pos = 0;

        for (int i = 0; i < steps; i++) {
            sr.Read(response, pos, bytelength);
            pos += bytelength;
            OnReceiveProgress((int)webResponse.ContentLength, pos);
        }

        if (left != 0) {
            sr.Read(response, pos, left);
        }

        sr.Close();
    }
    webResponse.Close();
}

OnReceiveProgress(1, 1);

OnReceiveFinished();
6
задан John Saunders 13 December 2011 в 14:16
поделиться