我有大约需要10-30秒,即从一个页面下载信息(含相当多的流量),修改它,然后某处它保存到使用Web客户端磁盘的事件。因为需要很长时间,所以我想添加一个进度条或者创建一个更新标签(表示更新等)来指示进度。进度条和WebClient的
有人能指导我一下,我会怎么做呢?我可以使用WebClient来处理这个事件吗?
我有大约需要10-30秒,即从一个页面下载信息(含相当多的流量),修改它,然后某处它保存到使用Web客户端磁盘的事件。因为需要很长时间,所以我想添加一个进度条或者创建一个更新标签(表示更新等)来指示进度。进度条和WebClient的
有人能指导我一下,我会怎么做呢?我可以使用WebClient来处理这个事件吗?
如果你正在编写一个Windows窗体客户端应用程序(而不是ASP.NET服务器端组件),显示了Web客户端下载的进度可以做如下:
WebClient webClient = new WebClient();
webClient.DownloadProgressChanged += (s, e) =>
{
progressBar.Value = e.ProgressPercentage;
};
webClient.DownloadFileCompleted += (s, e) =>
{
progressBar.Visible = false;
// any other code to process the file
};
webClient.DownloadFileAsync(new Uri("http://example.com/largefile.dat"),
@"C:\Path\To\Output.dat");
(progressBar
是您的窗体上的进度条对象的ID。)
什么是'(S,E)'位在这里干嘛? – Moshe 2011-03-27 05:03:52
@Moshe它是一个带有两个参数的lambda表达式(http://msdn.microsoft.com/zh-cn/library/bb397687.aspx)这里用来简明地将匿名代理添加为事件处理程序。 – 2011-03-27 05:48:41
http://sphotos.ak.fbcdn.net/hphotos-ak-snc4/hs892.snc4/72545_444026184526_748429526_5254434_3858588_n.jpg – Pedery 2010-11-13 15:30:35