冻结Indy HTTP.获取Android Delphi 11内部线程



我最近从Delphi 10.2迁移到Delphi 11。在此代码的基础上,我定期在线程内从服务器获取http。

myth := TThread.CreateAnonymousThread(
procedure
var IdHTTP1:TIdHTTP;
begin
...
...
IdHTTP1:=TIdHTTP.Create();
IdHTTP1.Request.UserAgent := 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:12.0) 
Gecko/20100101Firefox/12.0';
...
...
IdHTTP1.Get(Url,ResStm);
...
...
end);
myth.start

这段代码在Delphi 10.2上运行,没有任何冻结,但在Delphi 11上冻结了这行"IdHTTP1.Get(Url,ResStm(;"超过5秒。

使用不正确的位置进行同步过程以更新表单内容是冻结的原因。

TThread.Synchronize (TThread.CurrentThread,procedure ()
begin
....
...
...
end);

通过将这种封闭结构限制在一些必要的线路上,冻结限制在毫秒,而这并不明显。例如:我将流的解压缩置于同步之外。

最后提到:这种冻结发生在Delphi11

最新更新