我最近從 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 秒。
uj5u.com熱心網友回復:
用于更新表單內容的同步程式的不良位置是這種凍結的原因。
TThread.Synchronize (TThread.CurrentThread,procedure ()
begin
....
...
...
end);
通過將此封閉結構限制為一些必要的行,凍結限制在毫秒內并且不明顯。例如:我將流的解壓縮放在同步之外。
最后提一下:這種凍結發生在Delphi 11 上
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/387988.html
