Używam TWebBrowser do wyświetlania mapy Google. Problem polega na tym, że blokuje główny wątek interfejsu użytkownika podczas ładowania mapy. Czy można aktualizować mapę w osobnym wątku?Zaktualizuj TWebBrowser w osobnym wątku?
Edytuj: RRUZ masz rację TWebBrowser ma asynchroniczne ładowanie dla adresu URL. Ale znalazłem problem dlaczego blokuje połączenia:
if WaitWhileProcessing and (MapQueryResult.Count > 0) then
Result := MapQueryResult[0] as TMapQuery;
i metoda:
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;
Wygląda więc na to, aby naprawić ten kod powinien być refactored. Ale to nie jest zakres tego pytania.
Czy jesteś pewien, który GUI frezees podczas ładowania mapy? ponieważ TWebBrowser działa asynchronicznie. czy możesz pokazać kod, którego używasz do załadowania mapy? – RRUZ
Czy próbowałeś z TEmbeddedWB z www.bsalsa.com? Może mieć już rozwiązanie i być całkiem łatwe do przełączenia się do niego i uzyskania działania obciążeń asynchronicznych. –
Dzięki za sugestie zarówno RRUZ, jak i WarrenP. RRUZ mają rację, że jest już ładowanie asynchroniczne w TWebBrowser. W moim przypadku powodem jest coś innego. Muszę zbadać, ponieważ kod jest dość skomplikowany ... –