【发布时间】:2022-01-18 11:35:27
【问题描述】:
我最近从 Delph 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 秒。
【问题讨论】:
-
在这里工作正常。您可能想显示正确的minimal reproducible example,因为上面的代码可以正常工作。确保这不是与服务器相关的问题。
-
如果你给
TIdHTTP.ConnectTimeout和/或TIdHTTP.ReadTimeout分配一个ConnectTimeout 仅适用于目标 IP 已知后 TCP 连接的初始建立。ReadTimeout仅适用于从 TCP 连接读取数据时。 -
我的实际代码非常复杂,我为“minimal-reproducible-example”编写了一个经过测试的程序,它没有任何毛躁,但在我的代码中提及行有延迟,当我变暗时行每件事都很好。我提到在 Delphi 10.2 上不会发生冻结,并且在 Delphi 11 上运行程序时没有任何更改的代码会卷曲。