Используя следующий код (из приложения Silverlight 4 OOB), я получаю поток результатов с нулевым размером, хотя для загрузки всего файла (900 + МБ) требуется время, и об ошибках не сообщается.Fiddler также говорит, что весь файл был загружен.
Обработчик изменения прогресса (хотя и не показан ниже) поражен и сообщает об увеличении процента загрузки.
Работает с небольшими файлами (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 />
}
Есть идеи?