У меня есть следующий метод, который используется для загрузки файла. Он работает нормально, если интернет-соединение не обрывается во время процесса загрузки. В этом случае он застревает на чтении из ReceiveStream (т. е. в len = receiveStream.Read(buffer, 0, buffer.Length). Он не продолжается и не выдает исключение, просто кажется, что он застрял там навсегда. установите тайм-ауты на 10 секунд и поймайте их выше Я делаю что-то не так или что-то упускаю?
Я также пробовал использовать асинхронные методы (BeginGetResponse, BeginRead и т. д.), и они тоже застревают.
Я протестировал это как на профессиональном эмуляторе Windows Mobile 6, так и на мобильном устройстве Windows.
private void DownloadFile(string url, string filename)
{
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
request.Timeout = 10000;
request.ReadWriteTimeout = 10000;
using (HttpWebResponse response = (HttpWebResponse)request.GetResponse())
{
using (Stream receiveStream = response.GetResponseStream())
{
long size = response.ContentLength;
using (Stream file = File.OpenWrite(filename))
{
byte[] buffer = new byte[8 * 1024];
int len;
while ((len = receiveStream.Read(buffer, 0, buffer.Length)) > 0)
{
file.Write(buffer, 0, len);
total += len;
UpdateDownloadState(total, size);
}
}
}
}
}
Спасибо
ReadWriteTimeout
в настоящее время? или не работает? значение: вы в конечном итоге получитеTimeoutException
(через 10 секунд?) - person Marc Gravell   schedule 23.01.2013