使用下面的代碼(從一個Silverlight 4 OOB應用程序),我得到了尺寸的結果爲零流,即使它採取下載整個文件(900 + MB)的時間和沒有錯誤報告。提琴手也說整個文件被下載。爲什麼WebClient.OpenReadAsync返回零長度的e.Result如果下載是成功的?
點擊進度處理程序(儘管未在下面顯示),並報告下載百分比增加。
這適用於較小的文件(10MB)。
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 />
}
任何想法?
問題描述在哪裏? – 2010-10-07 17:47:35
@SB此刻只有在微軟某人的電子郵件中。我已經詢問了哪裏/是否有文件記錄,但尚未收到回覆。 – 2010-10-08 08:39:28