Article View: pl.comp.lang.delphi
Article #334562Re: kto niszczy te bitmape ???
From: Arivald
Date: Tue, 03 Jan 2012 15:21
Date: Tue, 03 Jan 2012 15:21
49 lines
2336 bytes
2336 bytes
W dniu 2012-01-03 13:57, neuron pisze:
> mam funkcje
>
> function GetG:TBitMap;
> begin
> try
> // tu tworze okno ale go nie pokazuje F
> result:= TBitMap.create;
> result:= F.GetFormImage;
> finally
> F.free;
> end;
> end;
>
>
> w watku serwera http indy tworze jpega i robie mu jpeg.assign(getGr);
>
> Dziala prawidlowo ale co kilkaset, czasami kilka tysiecy wywolan (otwarte
> kilka przegladaek wiec tworzone sa czasem po 34 procesy) robi end of
> resource albo AV albo blad socket a pamiec powolutku cieknie - ale duzo
> duzo wolniej niz by to wynikalo z
> objetosci grafiki
>
> Czy nie jest niszczona bitmapa z result czy raczej bedzie to cos nie tak z
> wspolbieznoscia? Dodam ze nei mam w watku (zdarzeni CommandGet) zadnej
> sychchronizacji, zreszta nawet nie mam pewnosci czy indy robi oddzielny
> watek dla kazdego zaptyania ale sadzac po monitorze chyba tak.
Do wielu operacji na bitmapie niezbędny jest Canvas. Dla bitmapy jest to
Tzw MemoryDC.
VCL ma optymalizację, że po obsłużeniu komunikatów zwalnia wszystkie
MemoryDC (funkcja FreeMemoryContexts() ). Więc jeśli akurat wątek wtedy
coś robil na tej bitmapie/jej canvasie, to masz AV i inne cuda.
Sposób jest prosty - zablokować canvas bitmapy na czas operacji w wątku:
with TBitMap.Canvas do
begin
Lock()
try
operacje
finally
Unlock();
end;
end;
--
Arivald
Technical Details
Message-ID:
<jdv6dj$9e3$1@news.dialog.net.pl>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed.pionier.net.pl!news.dialog.net.pl!not-for-mailReferences:
<jdutt9$562$1@mx1.internetia.pl>Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed.pionier.net.pl!news.dialog.net.pl!not-for-mail From: Arivald <arivald_@AT_interia_DOT_.pl> Newsgroups: pl.comp.lang.delphi Subject: Re: kto niszczy te bitmape ??? Date: Tue, 03 Jan 2012 16:21:25 +0100 Organization: Dialog Net Lines: 51 Message-ID: <jdv6dj$9e3$1@news.dialog.net.pl> References: <jdutt9$562$1@mx1.internetia.pl> NNTP-Posting-Host: poczta.pgs-soft.com Mime-Version: 1.0 X-Trace: news.dialog.net.pl 1325604083 9667 62.87.249.67 (3 Jan 2012 15:21:23 GMT) X-Complaints-To: abuse@dialog.net.pl NNTP-Posting-Date: Tue, 3 Jan 2012 15:21:23 +0000 (UTC) User-Agent: Mozilla/5.0 (Windows NT 5.1; rv:9.0) Gecko/20111222 Thunderbird/9.0.1 In-Reply-To: <jdutt9$562$1@mx1.internetia.pl> X-Stationery: 0.7.7 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit