Я использую TWebBrowser для отображения карты Google. Проблема в том, что он блокирует основной поток ui, пока он загружает карту. Возможно ли обновить карту в отдельном потоке?Обновление TWebBrowser в отдельном потоке?
Редактировать: 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;
Так что, похоже, чтобы исправить этот код должен быть переработан. Но это не вопрос для этого вопроса.
Вы уверены, что графический интерфейс frezees во время загрузки карты? потому что TWebBrowser действует асинхронно. можете ли вы показать код, который вы используете для загрузки карты? – RRUZ
Вы пробовали это с помощью TEmbeddedWB от www.bsalsa.com? У него может быть решение уже, и его довольно легко переключить на него и заставить работать асинхронные нагрузки. –
Спасибо за предложения как RRUZ, так и WarrenP. RRUZ правы, что это уже асинхронная загрузка в TWebBrowser. Так что в моем случае причина - это что-то другое. Я должен исследовать, потому что код довольно сложный ... –