当它在GET之后等待服务器的响应并且线程被终止时,我有一些与TidHTTP相关的内存泄漏.
示例:
aThread = class(TThread)
private
FidHTTP :TidHTTP;
FCommand :String;
public
procedure Execute(); override;
constructor Create(aCommand :String); override;
procedure Disconnect;
end;
procedure aThread.Execute();
var response :String;
begin
response := FidHTTP.Get(FCommand);
end;
procedure aThread.Disconnect;
begin
if ((FidHTTP <> nil) and (FidHTTP.Connected)) then FidHTTP.IOHandler.CloseGracefully;
end;
constructor aThread.Create(aCommand :String); override;
begin
FCommand := aCommand;
inherited Create;
end;
Run Code Online (Sandbox Code Playgroud)
当应用程序关闭时,我用这个停止线程:
aThread.Disconnect;
aThread.Terminate;
aThread.Free;
Run Code Online (Sandbox Code Playgroud)
我该怎么办才能解决内存泄漏问题?
FastMM4 Log :
13 - 20 bytes: TIdThreadSafeInteger x 1
21 - 36 bytes: EAccessViolation x 1, TIdCriticalSection x 2
181 …Run Code Online (Sandbox Code Playgroud) 我正在尝试制作一个显示来自互联网图片的列表框.这些项目是通过将itemsource绑定到包含图像URL和其他一些属性(title,desc等等)的模型来提供的.
不幸的是,列表加载速度非常慢,因为WPF在显示列表之前尝试从Web下载所有图片,并使应用程序冻结15到25秒.
我已经读过我应该在另一个帖子中加载图片,但我不知道我应该在哪里做以及如何做?是否更好地直接在模型中加载所有图片(通过仅为此创建一个线程池 - 但问题是它不是模型/模型视图的真正部分)或者更好地创建一个将直接更新的后台线程列表何时有数据?
谢谢 !