Проблема FireMonkey с Android с помощью TIdHTTPServer - PullRequest
0 голосов
/ 15 января 2019

У меня есть приложение FireMonkey для Android с TTabControl, TWebBrowser и TIdHTTPServer.

Я пытаюсь перенаправить клиентов HTTP на новый URL-адрес в событии TIdHTTPServer.OnCommandGet, используя следующий код:

TabControl1.ActiveTab := TabItem2;
AResponseInfo.ResponseNo := 302;
AResponseInfo.Location := ARequestInfo.Params.Values['url'];

Но я получаю ошибку:

Checksynchronize вызывается из потока $ c6f02970, который НЕ является основным потоком.

Как изменить вкладку после поступления запроса к компоненту TIdHTTPServer? 1017 *

1 Ответ

0 голосов
/ 15 января 2019

Событие OnCommandGet выполняется в контексте рабочего потока.Вам разрешен доступ к пользовательскому интерфейсу только из основного потока пользовательского интерфейса.Переместите доступ к элементам управления пользовательского интерфейса, встроенным в вызов, в TThread.Synchronize или TThread.Queue.

TThread.Synchronize(nil,
  procedure
  begin
    Tabcontrol1.ActiveTab:=tabitem2;
  end);
AResponseInfo.ResponseNo := 302;
AResponseInfo.Location := ARequestInfo.Params.Values['url'];
...