Hallo Leute,
folgendes Problem: In einem Thread läuft immer nur diese Funktion ab:
Delphi-Quellcode:
procedure TRefresh_2.Execute;
begin
with FWorkImage
do
begin
PixelFormat := pf8bit;
Width := Image1.Width;
Height := Image1.Height;
end;
//
// LOOP starts here...
//
while not Self.Terminated
do
begin
try
BitBlt(FWorkImage.Canvas.Handle,
0,
0,
Image1.Width,
Image1.Height,
Image1.Canvas.Handle,
0,
0,
SRCCOPY);
Synchronize(Sync);
Sleep(20);
except
raise Exception.Create('
EXECUTE Counter at: ' + IntToStr(FCounter));
end;
end;
end;
procedure TRefresh_2.Sync;
begin
try
Inc(FCounter);
FImage.Assign(FWorkImage);
except
raise Exception.Create('
SYNC Counter at: ' + IntToStr(FCounter));
end;
end;
Das Hauptprogramm startet einfach nur den Thread und hat 2 TBitmaps welche beide an den Thread übergeben werden (Image1 und FImage).
Das Programm läuft und läuft...solange man die Maus nicht bewegt oder die
GUI resized. Dann knallts mit der
Exception: Nicht genügend Speicher verfügbar.
Jemand eine Idee?