У меня есть такая конструкция:
image.bitmap.Assign(nil);
TTask.Run(procedure
begin
TThread.Synchronize(nil, procedure
begin
label_loader.visible:=true;
end);
ReadImageFromWeb(image,url); //load image from URL
TThread.Synchronize(nil, procedure
begin
label_loader.visible:= false;
end);
end);
procedure ReadImageFromWeb(image:TImage;url: string);
var
memStream : TMemoryStream;
IdHTTP: TIdHTTP;
begin
IdHTTP := TIdHTTP.Create;
memStream := TMemoryStream.Create;
try
IdHTTP.Request.UserAgent := 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:12.0) Gecko/20100101 Firefox/12.0';
IdHTTP.Request.Connection := 'keep-alive';
IdHTTP.Request.ContentType := 'application/x-www-form-urlencoded';
IdHTTP.Request.Charset := 'utf-8';
IdHTTP.Request.Pragma := 'no-cache';
IdHTTP.Get(url,memStream);
except
ShowMessage('Image not found');
memStream.Free;
IdHTTP.Free;
exit;
end;
try
memStream.Position:=0;
image.Bitmap.LoadFromStream(memStream);
finally
memStream.Free;
IdHTTP.Free;
end;
end;
Время от времени, несмотря на то, что изображение было загружено, оно не отображается в объекте TImage
. Это происходит только в том случае, если процедура ReadImageFromWeb()
строится с TTask
. Если я удалю TTask
, такой проблемы не будет.
Кто-нибудь может мне помочь?