Я пробовал и WebClient, и HttpWebRequest, чтобы загрузить файл размером 381 МБ через соединение Wi-Fi или привязанный. Он продолжал сбои (без ошибок и исключений). Он работает с файлом размером 194 МБ. Есть ли способ скачать большие файлы? или Есть ли ограничение размера файла для загрузки на Windows Phone 7? Благодарю.
Для запроса HttpWebRequest: Request.BeginGetResponse () никогда не перезванивает;
Для WebClient: DownloadProgressChanged хорошо реагирует, но он падает до OpenReadCompleted.
Тот же код работает нормально, когда файл меньше, например, 194 МБ.
Вот код для WebClient:
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 МБ, приложение вылетает до вызова OpenReadCompleted.
Аналогично, когда я попробовал HttpWebRequest, обратный вызов, назначенный для Request.BeginGetResponse (), не вызывается для файла размером 381 МБ.
Для файлов меньшего размера он отлично работает либо с WebClient, либо с HttpWebRequest. Мне кажется, есть ограничение «памяти» при передаче загруженного файла в приложение?