Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/joomla/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何异步更改webBrowser内容?_C#_Winforms_Asynchronous_Webbrowser Control - Fatal编程技术网

C# 如何异步更改webBrowser内容?

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 =

我正在做一个Rss提要阅读器程序,我想以html格式显示文章描述。我搜索了一些关于它的文章和问题,找到了extendedrichTextbox之类的东西,但我不喜欢它们。(因为它太复杂了,我只想显示值)所以我决定在webbrowser中显示内容。我将所有文章描述html代码保存到单独的html文件中,然后当我想在webbrowser中显示内容时,我会收到文件路径并将其设置为webbrowser.Url

这是我的密码:

 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
相同。它不能保证同步完成,即使有时会同步完成。