2010-11-13 50 views
3

我有大约需要10-30秒,即从一个页面下载信息(含相当多的流量),修改它,然后某处它保存到使用Web客户端磁盘的事件。因为需要很长时间,所以我想添加一个进度条或者创建一个更新标签(表示更新等)来指示进度。进度条和WebClient的

有人能指导我一下,我会怎么做呢?我可以使用WebClient来处理这个事件吗?

+0

http://sphotos.ak.fbcdn.net/hphotos-ak-snc4/hs892.snc4/72545_444026184526_748429526_5254434_3858588_n.jpg – Pedery 2010-11-13 15:30:35

回答

16

如果你正在编写一个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。)

+1

什么是'(S,E)'位在这里干嘛? – Moshe 2011-03-27 05:03:52

+4

@Moshe它是一个带有两个参数的lambda表达式(http://msdn.microsoft.com/zh-cn/library/bb397687.aspx)这里用来简明地将匿名代理添加为事件处理程序。 – 2011-03-27 05:48:41