C# 如何异步更改webBrowser内容?
我正在做一个Rss提要阅读器程序,我想以html格式显示文章描述。我搜索了一些关于它的文章和问题,找到了extendedrichTextbox之类的东西,但我不喜欢它们。(因为它太复杂了,我只想显示值)所以我决定在webbrowser中显示内容。我将所有文章描述html代码保存到单独的html文件中,然后当我想在webbrowser中显示内容时,我会收到文件路径并将其设置为webbrowser.Url 这是我的密码:C# 如何异步更改webBrowser内容?,c#,winforms,asynchronous,webbrowser-control,C#,Winforms,Asynchronous,Webbrowser Control,我正在做一个Rss提要阅读器程序,我想以html格式显示文章描述。我搜索了一些关于它的文章和问题,找到了extendedrichTextbox之类的东西,但我不喜欢它们。(因为它太复杂了,我只想显示值)所以我决定在webbrowser中显示内容。我将所有文章描述html代码保存到单独的html文件中,然后当我想在webbrowser中显示内容时,我会收到文件路径并将其设置为webbrowser.Url 这是我的密码: var articles = user.RssFeeds.Where(r =
var articles = user.RssFeeds.Where(r => r.Id == rssFeedId).Select(p => p.Articles).First();
var filePath = (from a in articles
where a.Title == articleName
select a.FilePath).First();
webBrowser1.Url = new Uri(filePath);
我的问题是设置Webbrowser.Url时需要花费太多的时间,而我的窗口会冻结5-10秒。当它发生时,我会尝试以下方法:
var task = Task.Factory.StartNew(() => webBrowser1.Url = new Uri(filePath));
但它不起作用,因为它仍然在同一个线程上工作,我尝试了其他愚蠢的方法,但它们也不起作用。这个问题发生在我单击treeview中的第一个文章节点时,之后所有文章都会显示而不冻结
因此,我等待您的回答和建议。很抱歉我的英语不好。设置
WebBrowser.Url
只会触发下载,通常在移动到下一个Url之前,您还需要处理DocumentComplete
事件。您可以使用异步循环来执行此操作,如doworksync
谢谢,但是如果我需要异步,我使用webBrowser.DocumentStream解决了这个问题。再次工作我将使用您的代码,谢谢:)@Selman22,webBrowser.DocumentStream
也是异步的,与webBrowser.DocumentText
相同。它不能保证同步完成,即使有时会同步完成。