为什么WebClient.UploadFileAsync中的UploadProgressChanged工作不正确?

时间:2015-05-23 17:57:19

标签: c# wpf file-upload upload

我上传文件并获得上传进度:

using (var wc = new WebClient())
{
        wc.UploadProgressChanged += FileUploadProgressChanged;
        wc.Headers.Add(HttpRequestHeader.ContentType, "image/png");
        wc.UploadFileAsync(new Uri(url), filePath);
}

...

private void FileUploadProgressChanged(object sender, UploadProgressChangedEventArgs e)
{
        ProgressBarUpload.Value = e.ProgressPercentage;
}

但是50%e.ProgressPercentage返回-441850后立即返回100.为什么会发生这种情况?

1 个答案:

答案 0 :(得分:1)

我的解决方案:

private void FileUploadProgressChanged(object sender, UploadProgressChangedEventArgs e)
{
        ProgressBarUpload.Value = e.BytesSent * 100 / e.TotalBytesToSend;
}

我还发现了两个与此类似的问题,但我还没有设法解决问题。但它对其他人有用:

WebClient UploadFileAsync strange behaviour in progress reporting(问题的原因 - 授权问题)

Uploading HTTP progress tracking(问题的原因 - 第三方应用程序)

注意。А下载文件后我们收到服务器的回复,最好显示下载文件为95%,其余5%留下来显示来自服务器的响应。在成功下载并从服务器响应之后,我们将100%完成。

PS:在代码中,我没有展示它,只是对那些可能需要它的人说。