您好我正在使用HtmlAgilityPack使用c#从网络中删除一些数据。这是代码:
private void button1_Click(object sender, EventArgs e)
{
var url = this.textBox1.Text;
var webGet = new HtmlWeb();
var document = webGet.Load(url);
var metaTags = document.DocumentNode.SelectNodes("//meta");
if (metaTags != null)
{
foreach (var tag in metaTags)
{
var name = tag.Attributes["name"].Value;
var content = tag.Attributes["content"].Value;
this.textBox2.Text = name + " : " + content;
}
}
}
从textbox1获取一个链接并显示输出到textbox2。它显示了最后可用的数据。我可以连接可用的数据,但它会立即显示所有数据。实际上我想显示一个数据,当其他数据可用时,其他人正在处理,以便用户可以实现报废进度。有人可以帮忙吗?
答案 0 :(得分:0)
假设您的代码的前半部分是正确的,此将逐个显示数据。最有可能的是,foreach
循环执行得太快,您无法注意到“一个一个”的影响。
如果您需要显示每个结果足够长的时间以供某人阅读,您可以应用人为延迟。也许使用Timer或类似的东西。
另一种方法是使用多行文本框(例如RichTextBox)并将每个结果放在换行符上。或ComboBox,不会占用太多空间。这些选项允许您保留数据,而不必覆盖它。
答案 1 :(得分:0)
您可以使用Timer控制来延迟循环中下一个值的显示。
您也可以使用BackgroundWorker完成此操作。但是,这会增加代码的复杂性。请查看Beginners Guide to Threading in .NET: Part 5
或者您可以使用Thread.Sleep(xx),它将延迟执行您指定的毫秒数。
Thread.Sleep(2000);
this.textBox2.Text += name + " : " + content + Environment.NewLine;