Используя следующий код (из приложения OLE Silverlight 4 OOB), я получаю поток результатов с нулевым размером, хотя требуется время для загрузки всего файла (900 + МБ), и об ошибке не сообщается. Fiddler также говорит, что весь файл был загружен.Почему WebClient.OpenReadAsync возвращает e.Получение нулевой длины, если загрузка прошла успешно?
Удаленный обработчик прогресса (хотя и не показан ниже) получает сообщение об увеличении процента загрузки.
Работает с меньшими файлами (10 МБ).
var wc = new WebClient();
wc.OpenReadCompleted += DownloadWholeFileOpenReadCompleted;
wc.DownloadProgressChanged += DownloadWholeFileDownloadProgressChanged;
wc.OpenReadAsync(new Uri(movie.DownloadUrl, UriKind.Absolute));
private static void DownloadWholeFileOpenReadCompleted(object sender, OpenReadCompletedEventArgs e)
{
if (e.Cancelled)
{
return; // this is not hit
}
if (e.Error != null)
{
return; // this is not hit
}
using (var fs = new FileStream(tempFilePath, FileMode.OpenOrCreate, FileAccess.Write, FileShare.None))
{
var buffer = new byte[4096];
int bytesRead;
// <snip />
// e.Result.Length this equals 0
while ((bytesRead = e.Result.Read(buffer, 0, buffer.Length)) != 0)
{
fs.Write(buffer, 0, bytesRead);
}
fs.Close();
}
// <snip />
}
Любые идеи?
Где описывается проблема? –
@SB на данный момент только по электронной почте от кого-то из Microsoft. Я спросил, где/если это задокументировано, но еще не получено ответа. –