这几乎是标题中的全部问题。我有一个WPF C#Windows应用程序,我为用户下载文件,现在想显示速度。WebClient DownloadFileAsync - 如何向用户显示下载速度?
4
A
回答
6
mWebClient.DownloadProgressChanged += (sender, e) => progressChanged(e.BytesReceived);
//...
DateTime lastUpdate;
long lastBytes = 0;
private void progressChanged(long bytes)
{
if (lastBytes == 0)
{
lastUpdate = DateTime.Now;
lastBytes = bytes;
return;
}
var now = DateTime.Now;
var timeSpan = now - lastUpdate;
var bytesChange = bytes - lastBytes;
var bytesPerSecond = bytesChange/timeSpan.Seconds;
lastBytes = bytes;
lastUpdate = now;
}
然后用bytesPerSecond变量做任何你需要的。
0
使用DownloadProgressChanged event
WebClient client = new WebClient();
Uri uri = new Uri(address);
// Specify that the DownloadFileCallback method gets called
// when the download completes.
client.DownloadFileCompleted += new AsyncCompletedEventHandler (DownloadFileCallback2);
// Specify a progress notification handler.
client.DownloadProgressChanged += new DownloadProgressChangedEventHandler(DownloadProgressCallback);
client.DownloadFileAsync (uri, "serverdata.txt");
private static void DownloadProgressCallback(object sender, DownloadProgressChangedEventArgs e)
{
// Displays the operation identifier, and the transfer progress.
Console.WriteLine("{0} downloaded {1} of {2} bytes. {3} % complete...",
(string)e.UserState,
e.BytesReceived,
e.TotalBytesToReceive,
e.ProgressPercentage);
}
0
当挂钩的Web客户端,您可以subsribe到ProgressChanged事件,例如
_httpClient = new WebClient();
_httpClient.DownloadProgressChanged += DownloadProgressChanged;
_httpClient.DownloadFileCompleted += DownloadFileCompleted;
_httpClient.DownloadFileAsync(new Uri(_internalState.Uri), _downloadFile.FullName);
此处理程序的EventArgs为您提供BytesReceieved和TotalBytesToReceive。使用这些信息,您应该能够确定下载速度并相应地拍摄进度条。
相关问题
- 1. WebClient DownloadFileAsync挂起
- 2. WebClient DownloadFileAsync()不起作用
- 3. 如何从FTP显示下载进度
- 4. 如何显示进度和下载速度
- 5. WebClient DownloadFileAsync文件存在
- 6. DownloadFileAsync下载一个0KB文件
- 7. WebClient DownloadFileAsync路径中的非法字符
- 8. 显示进度使用Web客户端下载
- 9. 平均用户下载速度
- 10. 无法使用DownloadFileAsync
- 11. 在c中显示下载进度#
- 12. 如何使用webclient下载js文件
- 13. 如何处理WebClient响应以向用户显示错误消息?
- 14. 使用C#中的WebClient下载时显示ProgessBar
- 15. Laravel限制客户端下载速度
- 16. C#WebClient上传速度
- 17. 如何增加ClickOnce下载速度?
- 18. 如何限制Go的下载速度?
- 19. 使用webclient下载文件
- 20. WebClient - DownloadFileAsync第二次调用时不起作用
- 21. 从网页下载图片,不向用户显示网页?
- 22. 在ProgressChanged中计算下载速度
- 23. DIALOG下载进度始终显示100%的第二次下载尝试
- 24. 如何在用户尝试下载文件时显示进度条
- 25. 下载经理提高下载速度
- 26. VB.NET DownloadFileAsync触发完成事件,但不下载
- 27. JavaScript/jQuery如何向用户显示regEx?
- 28. 如何使用ASINetworkQueue显示多个下载进度
- 29. 如何使用进度栏显示下载的百分比?
- 30. 措施下载速度
@nunespascal:还没有,我看不到任何适用的事件,真的不知道从哪里开始。 – Drahcir 2012-07-17 12:49:47