delphi WebView2执行脚本未返回

l2osamch  于 2023-01-20  发布在  其他
关注(0)|答案(1)|浏览(246)

我遇到了一个非常罕见的情况,似乎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时间后返回。
我错过什么了吗?

iqxoj9l9

iqxoj9l91#

如果您调用WebView2异步方法,然后使用休眠或不处理窗口消息的循环阻塞同一UI线程,则WebView2异步方法将永远无法完成。您需要返回消息循环,以便WebView2接收异步方法已完成的消息。WebView2线程模型文档中对此进行了详细描述。

相关问题