我试过WebClient和HttpWebRequest通过Wi-Fi连接或连接下载大小为381MB的文件。它保持崩溃(没有错误也没有例外)。它适用于大小为194MB的文件。任何方式来下载大文件?或者Windows Phone 7下的文件大小是否有限制?谢谢。WebClient和HttpWebRequest在Windows Phone 7上下载大文件时崩溃
对于HttpWebRequest:Request.BeginGetResponse()永远不会'回调'; 对于WebClient:DownloadProgressChanged响应良好,但在OpenReadCompleted之前崩溃。 当文件较小时,相同的代码工作正常,如194MB。
这里是Web客户端的代码:
WebClient wc = new WebClient();
wc.DownloadProgressChanged += ((s, e) =>
{
UpdateProgress(e.BytesReceived, e.TotalBytesToReceive);
});
wc.OpenReadCompleted += delegate(object sender, OpenReadCompletedEventArgs e)
{
if (e.Error == null)
{
using (var storeIso = IsolatedStorageFile.GetUserStoreForApplication())
{
if (e.Result.Length < storeIso.AvailableFreeSpace)
{
if (storeIso.FileExists(LocalFilePath))
storeIso.DeleteFile(LocalFilePath);
using (var fs =
new IsolatedStorageFileStream(LocalFilePath,
FileMode.Create, storeIso))
{
int bytesRead;
byte[] bytes = new byte[1024 * 1024 * 1]; // 1meg
while ((bytesRead =
ResponseStream.Read(bytes, 0, bytes.Length)) != 0)
{
fs.Write(bytes, 0, bytesRead);
}
fs.Flush();
}
}
}
}
};
wc.OpenReadAsync(
new System.Uri(DownloadFilePath, System.UriKind.RelativeOrAbsolute));
哪里的UpdateProgress是计算的百分比。 当我尝试使用大小为381 MB的文件时,应用程序在调用OpenReadCompleted之前崩溃。 当我尝试HttpWebRequest时,类似的情况是,分配给Request.BeginGetResponse()的回调未针对大小为381MB的文件调用。
对于较小的文件大小,使用WebClient或HttpWebRequest可以很好地工作。在我看来,将下载的文件传递给应用程序时存在“内存”限制?
你能发表一些代码吗? – Egon 2011-05-01 04:20:28