应用程序出现问题.DoEvents(),同时等待WebBrowser完成加载

本文关键字:等待 WebBrowser 加载 问题 DoEvents 应用程序 | 更新日期: 2023-09-27 18:03:04

我正在尝试加载WebBrowser内容,之后我想添加一些文本并滚动到底部。

下面是我的代码示例:

webBrowser1.Url = new System.Uri("file:///" + filePath);
webBrowser1.Document.Body.InnerHtml += text;
webBrowser1.Document.Body.ScrollTop = webBrowser1.Document.Body.ScrollRectangle.Height;

当我运行它时,会出现一个未处理的异常"对象引用未设置为对象的实例"。或者,当我的注释行进行滚动时,文本会添加到WebBrowser的以前内容中,然后导航到新内容。

所以在我的示例代码的第一行之后,我放了:

while (webBrowser1.ReadyState != WebBrowserReadyState.Complete) Application.DoEvents();

但它把一切都搞砸了。我的应用程序正在做一些非常奇怪的事情,例如多次调用同一个方法,而本应调用一次。

有什么解决办法吗?

应用程序出现问题.DoEvents(),同时等待WebBrowser完成加载

我认为您实际上想要订阅DocumentCompleted事件
Application.DoEvents仅处理挂起的Windows消息循环项目。

在任何一种情况下,在使用DoEvents之前,请确保您了解它可能存在的缺点。

DoEvents()在这里是一个糟糕的解决方案。您应该使用显式线程或BackgroundWorker来加载页面,并让UI线程来处理其他内容。