5
私はResponeStreamからバイトを読み込もうとしていますが、どのようにデータを待つことができますか?WebRequest GetResponseStream読み込みバイト
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();
あなたは正確な問題は何ですか?ところで、 'Read'は実際に読み込まれたバイト数を返します。読み込んだバイト数として 'bytelength'の代わりにそれを使用してください。 –