【发布时间】:2017-06-20 00:52:57
【问题描述】:
使用 TWebBrowser 的示例代码通常会插入一个循环来调用 Application.ProcessMessages,直到 ReadyState 为 READYSTATE_LOADED。
例如,从Embarcadero forums,一些代码将 HTML 字符串加载到 TWebBrowser:
mWebBrowser->Navigate(L"about:blank");
while (mWebBrowser->ReadyState< READYSTATE_LOADED)
Application->ProcessMessages();
// load mWebBrowser from TStreamAdapter
据我了解,调用 ProcessMessages 是有风险的,因为它会产生重入问题。 (例如,如果用户单击表单上的关闭按钮,则该消息可以由 ProcessMessages 处理,这样当函数返回时 TWebBrowser 实例甚至不再存在。)
我理解正确吗?
如果是这样,是否有一种“安全”的方式来处理 TWebBrowser 处理消息的需求,而不存在 ProcessMessages 的风险?还是我需要重新设计我所有的 TWebBrowser 代码以实现异步?
【问题讨论】:
标签: delphi c++builder twebbrowser