TWebBrowser を使用して Google マップを表示します。問題は、マップの読み込み中にメインの 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;
したがって、コードをリファクタリングする必要があるため、これを修正するようです。しかし、これはこの質問の範囲ではありません。