Я пытаюсь понять пример кода на этой веб-странице: (http://www.csharp -station.com / HowTo / HttpWebFetch.aspx ), который загружает файл из Интернета ,
Часть кода, приведенная ниже, проходит через цикл, собирая куски данных и сохраняя их в строку, пока все данные не будут загружены. Насколько я понимаю, «count» содержит размер загруженного чанка, и цикл продолжается до тех пор, пока count не станет равным 0 (загружается пустой чанк данных).
У меня вопрос: не может ли быть значение 0, если файл полностью не загружен? Скажем, если сетевое соединение прервано, поток может не иметь каких-либо данных для чтения на проходе цикла, и число должно быть 0, что преждевременно завершает загрузку. Или ResStream.Read останавливает программу, пока она не получает данные? Это правильный способ сохранить поток?
int count = 0;
do
{
// fill the buffer with data
count = resStream.Read(buf, 0, buf.Length);
// make sure we read some data
if (count != 0)
{
// translate from bytes to ASCII text
tempString = Encoding.ASCII.GetString(buf, 0, count);
// continue building the string
sb.Append(tempString);
}
}
while (count > 0); // any more data to read?