我使用 TWebBrowser 显示谷歌地图。问题是它在加载地图时阻塞了主 ui 线程。是否可以在单独的线程中更新地图?
编辑: RRUZ你是对的 TWebBrowser 对 URL 有异步加载。但我发现了为什么它会阻止调用的问题:
if WaitWhileProcessing and (MapQueryResult.Count > 0) then
Result := MapQueryResult[0] as TMapQuery;
和方法:
function TMapItemCollection.WaitWhileProcessing: Boolean;
var
vMaxSleepCnt: Integer;
begin
Result := True;
vMaxSleepCnt := 0;
while Processing or Loading do
begin
inc(vMaxSleepCnt);
Application.ProcessMessages;
Sleep(100);
if vMaxSleepCnt = 100 then
begin
Result := False;
Break;
end;
end;
end;
所以似乎要解决这个问题,应该重构代码。但这不是这个问题的范围。