我遇到了一个非常罕见的情况,似乎ExecuteScript不返回?
FWebBrowser.ExecuteScript('document.documentElement.outerHTML',
procedure (const AStrResult: string)
begin
// never returns here
TmpGetDocumentAsStr := AStrResult;
TmpCS.Acquire;
TmpExecuted := True;
TmpCS.Release;
end
);
所以我下面的代码一直在等待TmpExecuted为真(循环检查值并休眠)。
现在,我当然可以在100000毫秒后退出,但是我更希望Executescript在x时间后返回。
我错过什么了吗?
1条答案
按热度按时间iqxoj9l91#
如果您调用WebView2异步方法,然后使用休眠或不处理窗口消息的循环阻塞同一UI线程,则WebView2异步方法将永远无法完成。您需要返回消息循环,以便WebView2接收异步方法已完成的消息。WebView2线程模型文档中对此进行了详细描述。