Hab schon wieder nen Problem,
mein Programm (Musiksoftware) frisst aus irgend einem grund Speicher (Taskmanager Spalte: Speicherauslastung) allerdings nur wenn es nicht im Fordergrund ist. aller halben Sekunden zeichne ich auf die Canvas um den Fortschritsbalken des Liedes zu aktuallisieren und im gleichen Interval erhöht sich die Speicherauslastung. Wenn Mein Programm dann in den Vordergrund geholt wird, wird der Speicher wieder freigegeben. Ich vermute irgendwie das Wenn auf die Canvas nicht gezeichnet werden kann das Irgendwie "gecacht" wird und wenn dann die canvas wieder ontop ist wird das alles nachgeholt. Allerdings spricht dagegen, dass der speicherverbrauch auch zunimmt wenn mein Programm (und die Positionbar) sichtbar sind aber zum Beispiel der Taskmanager on Top ist. Hat irgend jemand ne Idee woran das liegen könnte?? Könnt auch eure unwahrscheinlichsten Theorien posten, vielleicht ist ja grad das unwahrscheinlichste die lösung
Source aus der Komponente wo ich den Fehler vermute
Delphi-Quellcode:
var LDC: HDC;
LCount: Integer;
LBlendFactor: Byte;
LToPos: Integer;
Lrect: TRect;
LColor: Tcolor;
begin
LDC := GetDC(
handle);
if LDC <> 0
then
begin
fCanvas.Handle := LDC;
fCanvas.Brush.Color := color;
LColor := GetBlendColor(color, fBlendColor, 0, 20);
Lrect := fCanvas.ClipRect;
if MaxPosition = 0
then LToPos := ClientWidth
else
LToPos := ClientWidth * Position
div MaxPosition;
lrect.Left := LToPos + 1;
fCanvas.FillRect(LRect);
for LCount := 0
to LToPos
do
begin
LBlendFactor := LCount * 255
div ClientWidth;
fCanvas.Pen.Color := GetBlendColor(LColor, fBlendColor, LBlendFactor);
fCanvas.MoveTo(LCount, 0);
fCanvas.LineTo(LCount, ClientHeight);
end;
ReleaseDC(
handle, LDC);
end;
end;