为什么 WebClient.UploadFileAsync 中的 UploadProgressChanged 工作不正常?
Why UploadProgressChanged in WebClient.UploadFileAsync work not correctly?
我正在上传文件并得到这样的上传进度:
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.ProgressPercentagereturn-441850然后马上returns 100。为什么会这样?
我的解决方案:
private void FileUploadProgressChanged(object sender, UploadProgressChangedEventArgs e)
{
ProgressBarUpload.Value = e.BytesSent * 100 / e.TotalBytesToSend;
}
我也发现了两个类似的问题,但都没有解决问题。但它可能对其他人有用:
WebClient UploadFileAsync strange behaviour in progress reporting(问题原因-授权问题)
(问题原因-第三方应用)
注意 А下载文件后我们收到服务器的响应,最好显示下载文件是95%,剩下的5%留给显示来自服务器的响应。最后在服务器成功下载和响应后,我们将是 100%。
PS:在代码中,我没有展示,只是说给可能需要的人。
我正在上传文件并得到这样的上传进度:
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.ProgressPercentagereturn-441850然后马上returns 100。为什么会这样?
我的解决方案:
private void FileUploadProgressChanged(object sender, UploadProgressChangedEventArgs e)
{
ProgressBarUpload.Value = e.BytesSent * 100 / e.TotalBytesToSend;
}
我也发现了两个类似的问题,但都没有解决问题。但它可能对其他人有用:
WebClient UploadFileAsync strange behaviour in progress reporting(问题原因-授权问题)
(问题原因-第三方应用)
注意 А下载文件后我们收到服务器的响应,最好显示下载文件是95%,剩下的5%留给显示来自服务器的响应。最后在服务器成功下载和响应后,我们将是 100%。
PS:在代码中,我没有展示,只是说给可能需要的人。