Bir thread kullanarak, 4 adet resim indirip 4 adet TImage nesnesinde gösteriyorum. Ancak bu threadleri her çalıştımdığımda prpogramın kullandığı memory artıyor. Yani thread çalışırken artıyor ancak bittiği zaman eski haline inmiyor. 4k kadar bazan 8k kadar daha fazla oluyor bu memory kullanımı. Birkaç thread'îm daha var, hepsinde de netten dosya indiriyor ve bazı işlemler yapıyorum. Birleşince çok acaip şeyler çıkıyor. 4-5 mb den başlayıp 10 mb'ye falan çıkıyor program.
Fikri olan? Yol gösterecek olan?
Thread'im şöyle:
Kod: Tümünü seç
unit ImgDownload;
interface
uses
Classes, idhttp, ExtCtrls;
type
thrImgDownload = class(TThread)
private
{ Private declarations }
thrurl, thrldosya: string;
thrImg: Timage;
IslemTamam: Boolean;
protected
procedure Execute; override;
procedure ImajYukle;
public
constructor create(url, ldosya: string; img: Timage);
end;
implementation
uses SysUtils;
{ thrImgDownload }
constructor thrImgDownload.create(url, ldosya: string; img: Timage);
begin
FreeOnTerminate := True;
thrurl := url;
thrldosya := ldosya;
thrImg := img;
inherited create(True);
Priority := tpLowest;
resume;
end;
procedure thrImgDownload.Execute;
var
Dosya: TFileStream;
httpclient: Tidhttp;
begin
{ Place thread code here }
try
try
dosya := TFileStream.create(thrldosya, fmCreate);
httpclient := TIdHTTP.Create(nil);
httpclient.ReadTimeout:=5000;
httpclient.Get(thrurl, dosya);
dosya.Free;
Synchronize(ImajYukle);
except
Dosya.Free;
if FileExists(thrldosya) then
DeleteFile(thrldosya);
end;
finally
httpclient.Free;
end;
end;
procedure thrImgDownload.ImajYukle;
begin
thrImg.Picture.LoadFromFile(thrldosya);
DeleteFile(thrldosya);
end;
end.
Kod: Tümünü seç
thrImgDownload.create('http://www.meteor.gov.tr/2003/iller/set7/kayseris.aspx','d:\tmps.gif',Image1);
thrImgDownload.create('http://www.meteor.gov.tr/2003/iller/set7/kayseri1.aspx','d:\tmp1.gif',Image2);
thrImgDownload.create('http://www.meteor.gov.tr/2003/iller/set7/kayseri2.aspx','d:\tmp2.gif',Image3);
thrImgDownload.create('http://www.meteor.gov.tr/2003/iller/set7/kayseri3.aspx','d:\tmp3.gif',Image4);