У меня большая проблема с данными, которые я пытаюсь загрузить в свое приложение через Интернет через HttpWebResponse. Мой код выглядит так:
myWebRequest.Timeout = 10000;
using (HttpWebResponse myWebResponse = (HttpWebResponse)myWebRequest.GetResponse())
{
using (Stream ReceiveStream = myWebResponse.GetResponseStream())
{
Encoding encode = Encoding.GetEncoding("utf-8");
StreamReader readStream = new StreamReader(ReceiveStream, encode);
// Read 1024 characters at a time.
Char[] read = new Char[1024];
int count = readStream.Read(read, 0, 1024);
int break_counter = 0;
while (count > 0 && break_counter < 10000)
{
String str = new String(read, 0, count);
buffer += str;
count = readStream.Read(read, 0, 1024);
break_counter++;
}
}
}
Этот код выполняется в нескольких случаях в отдельных потоках, поэтому его немного сложно отладить. Проблема в том, что этот метод застрял, и я виню в этом плохую связь с данными.
Как видите, я уже установил тайм-аут и надеялся, что код просто завершится после истечения времени ожидания. Это не! По крайней мере, не всегда. Иногда я получаю WebException / Timeout, но несколько раз он просто зависает.
Что такое тайм-аут? Когда это называется?
Допустим, HttpWebResponse начинает получать данные, но он застрял где-то в середине передачи. Получу ли я тайм-аут? Для меня это выглядит так, будто я этого не делаю, потому что мое приложение застряло и исключение тайм-аута не возникает.
Что я могу сделать, чтобы исправить это или как получить дополнительную информацию о том, что здесь происходит не так?