TWebbroser 冻结应用程序 UI - 从磁盘加载 HTML 文件
TWebbroser freezes application UI - load a HTML file from disk
我已经像这里 Whosebug 一样对这个主题做了一些 google 研究,但没有找到我的问题的正确答案。
我的应用程序 运行 在某些客户端 PC 上运行良好,但在我们希望使用我们的工具的所有系统上运行情况并非如此。
我猜我将 HTML 文件加载到 Web 浏览器的代码也适用于大多数情况:
MyWebBrowser.Navigate('about:blank');
MyWebBrowser.Navigate('file://' + Filename);
while MyWebBrowser.ReadyState <> READYSTATE_COMPLETE do
application.ProcessMessages;
但在尝试导航到我的 HTML 文件时,这些问题 PC 必须有一些条件导致我的应用程序冻结。
我想解决我的问题的答案将检查我的 IE 设置并在加载文件之前调整这些参数,但在这里我#m 运行 不知所措。
浏览浏览器控件时,永远不要假定调用同步完成。始终使用 OnNavigateComplete2
事件,即使您导航到应该相对较快的 'about:blank'。
使用该事件,您还可以通过 Application.ProcessMessages
避免丑陋的繁忙循环(并且由于它对您的方法提出的重入要求,从而避免了更多麻烦)。
我已经像这里 Whosebug 一样对这个主题做了一些 google 研究,但没有找到我的问题的正确答案。 我的应用程序 运行 在某些客户端 PC 上运行良好,但在我们希望使用我们的工具的所有系统上运行情况并非如此。
我猜我将 HTML 文件加载到 Web 浏览器的代码也适用于大多数情况:
MyWebBrowser.Navigate('about:blank');
MyWebBrowser.Navigate('file://' + Filename);
while MyWebBrowser.ReadyState <> READYSTATE_COMPLETE do
application.ProcessMessages;
但在尝试导航到我的 HTML 文件时,这些问题 PC 必须有一些条件导致我的应用程序冻结。
我想解决我的问题的答案将检查我的 IE 设置并在加载文件之前调整这些参数,但在这里我#m 运行 不知所措。
浏览浏览器控件时,永远不要假定调用同步完成。始终使用 OnNavigateComplete2
事件,即使您导航到应该相对较快的 'about:blank'。
使用该事件,您还可以通过 Application.ProcessMessages
避免丑陋的繁忙循环(并且由于它对您的方法提出的重入要求,从而避免了更多麻烦)。