Windows Mobile 6.5(c#.net cf 3.5)下载文件卡在Stream Read上

时间:2013-01-23 11:45:12

标签: c# httpwebrequest download httpwebresponse .net-cf-3.5

我有以下方法用于下载文件。 它工作正常,除非在下载过程中互联网连接中断。 在这种情况下,它会停留在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);
                    }

                }
            }
        }
    }

由于

0 个答案:

没有答案