我有以下方法用于下载文件。 它工作正常,除非在下载过程中互联网连接中断。 在这种情况下,它会停留在receiveStream的读取上(即在len = receiveStream.Read(buffer,0,buffer.Length)中。它不会继续,或者抛出 一个例外,它似乎永远被困在那里。我设置了超时 到10s,然后把它们抬得更高。我做错了什么,或者错过了什么?
我也尝试过使用异步方法(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);
}
}
}
}
}
由于