gpt4 book ai didi

C# - 在未完成时显示加载?

转载 作者:行者123 更新时间:2023-11-30 17:12:22 25 4
gpt4 key购买 nike

在我的 C# 应用程序中,我通过读取 HTML 页面并解析其中的一些链接并将它们放入 richTextBox(目前)来启动程序。但问题是,因为它必须读取链接,所以需要一些时间,所以当我启动程序时,大约需要 5 秒才能显示表单。我想做的是立即显示表单,并显示加载光标或禁用的 richTextBox。我该怎么做呢?以下是所发生情况的示例:

public Intro()
{
InitializeComponent();
WebClient wc = new WebClient();
string source = wc.DownloadString("http://example.com");

HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument();
doc.LoadHtml(source);
var nodes = doc.DocumentNode.SelectNodes("//a[starts-with(@class, 'url')]");
foreach (HtmlNode node in nodes)
{
HtmlAttribute att = node.Attributes["href"];
richTextBox1.Text = richTextBox1.Text + att.Value + "\n";

}

}

最佳答案

好的,一点点(我希望这一切都是正确的)示例如何使用任务并行库来做到这一点(什么?我喜欢它...)

public Intro()
{
InitializeComponent();

richTextBox1.IsEnabled = false;
Task.Factory.StartNew( () =>
{
WebClient wc = new WebClient();
string source = wc.DownloadString("http://example.com");

HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument();
doc.LoadHtml(source);
var nodes = doc.DocumentNode.SelectNodes("//a[starts-with(@class, 'url')]");
return nodes;
}).ContinueWith( result =>
{
richTextBox1.IsEnabled = true;

if (result.Exception != null) throw result.Exception;

foreach (var node in result.Result)
{
HtmlAttribute att = node.Attributes["href"];
richTextBox1.Text = richTextBox1.Text + att.Value + "\n";
}

}, TaskScheduler.FromCurrentSynchronizationContext());
}

关于C# - 在未完成时显示加载?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10717952/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com