TIdHTTPServer 的 FireMonkey Android 问题
FireMonkey Android problem with TIdHTTPServer
我有一个 FireMonkey Android 应用程序,其中包含 TTabControl
、TWebBrowser
和 TIdHTTPServer
。
我尝试使用以下代码将 HTTP 客户端重定向到 TIdHTTPServer.OnCommandGet
事件中的新 URL:
TabControl1.ActiveTab := TabItem2;
AResponseInfo.ResponseNo := 302;
AResponseInfo.Location := ARequestInfo.Params.Values['url'];
但是我得到一个错误:
Checksynchronize called from thread $c6f02970 which is NOT the main thread.
请求到达 TIdHTTPServer
组件后如何更改选项卡?
OnCommandGet
事件在工作线程的上下文中执行。您只能从主 UI 线程访问用户界面。将对 UI 控件的访问权限嵌入到对 TThread.Synchronize
or TThread.Queue
.
的调用中
TThread.Synchronize(nil,
procedure
begin
Tabcontrol1.ActiveTab:=tabitem2;
end);
AResponseInfo.ResponseNo := 302;
AResponseInfo.Location := ARequestInfo.Params.Values['url'];
我有一个 FireMonkey Android 应用程序,其中包含 TTabControl
、TWebBrowser
和 TIdHTTPServer
。
我尝试使用以下代码将 HTTP 客户端重定向到 TIdHTTPServer.OnCommandGet
事件中的新 URL:
TabControl1.ActiveTab := TabItem2;
AResponseInfo.ResponseNo := 302;
AResponseInfo.Location := ARequestInfo.Params.Values['url'];
但是我得到一个错误:
Checksynchronize called from thread $c6f02970 which is NOT the main thread.
请求到达 TIdHTTPServer
组件后如何更改选项卡?
OnCommandGet
事件在工作线程的上下文中执行。您只能从主 UI 线程访问用户界面。将对 UI 控件的访问权限嵌入到对 TThread.Synchronize
or TThread.Queue
.
TThread.Synchronize(nil,
procedure
begin
Tabcontrol1.ActiveTab:=tabitem2;
end);
AResponseInfo.ResponseNo := 302;
AResponseInfo.Location := ARequestInfo.Params.Values['url'];