C# 如何使progressbar在wpf中使用webclient下载字符串。。?
我制作了一个小应用程序,帮助下载网页的html内容。我制作了progressbar,使用webclient downloadprogress changed事件处理程序无法获取任何值或任何更改。 这是我的密码C# 如何使progressbar在wpf中使用webclient下载字符串。。?,c#,wpf,progress-bar,webclient,C#,Wpf,Progress Bar,Webclient,我制作了一个小应用程序,帮助下载网页的html内容。我制作了progressbar,使用webclient downloadprogress changed事件处理程序无法获取任何值或任何更改。 这是我的密码 private void Window_Loaded(object sender, RoutedEventArgs e) { progressBar1.Maximum = 100; WebClient wb = new WebClient(); wb.Downloa
private void Window_Loaded(object sender, RoutedEventArgs e)
{
progressBar1.Maximum = 100;
WebClient wb = new WebClient();
wb.DownloadProgressChanged += new DownloadProgressChangedEventHandler(wb_DownloadProgressChanged);
wb.DownloadStringCompleted += new DownloadStringCompletedEventHandler(wb_DownloadStringCompleted);
wb.DownloadStringAsync(new Uri("http://www.google.com"));
}
void wb_DownloadStringCompleted(object sender, DownloadStringCompletedEventArgs e)
{
string htmldoc = e.Result;
}
void wb_DownloadProgressChanged(object sender, DownloadProgressChangedEventArgs e)
{
progressBar1.Value = e.ProgressPercentage;
}
当我运行此代码时,e.progresspercentage始终为0,当下载完成时,它变为100。所以我不能让progressbar可行。谁能告诉我这里怎么了。。?
提前感谢。您不能,下载StringAync不会引发事件。您可以改为使用,然后使用类似System.Text.Encoding的东西将其转换为字符串。根据文档,DownloadStringAsync不报告进度。请参阅的文档 你还想用吗
using System.ComponentModel;
client.DownloadStringCompleted += new AsyncCompletedEventHandler(client_DownloadFileCompleted);
对此不确定,但我怀疑DownloadXXX方法依赖于预先报告的总大小来报告进度。就像被动FTP下载不会预先报告总下载大小一样,可能google.com web服务器没有返回适当的标题,指示将沿管道发送的预期字节数。但我仍然没有更改progressbar…与以前一样。