Hallo,
ich arbeite an einem Programm, das verschiedene Bilder bearbeitet. Zur Beschleunigung wollte ich Threads verwenden. Leider bekomme ich dabei die Fehlermeldung "Systemressourcen erschöpft", was ich mir nicht so ganz erklären kann (64bit System, 16GB
RAM, 8 Kerne)
Der Code sieht grob folgendermaßen aus:
Code:
procedure MyThread.Execute();
var
BMP1, BMP2 : TBitMap;
i, j : Integer;
begin
BMP1.Create;
BMP2.Create;
for i := LOW to HIGH do
begin
for j := LOW to HIGH do
begin
Berechne(x1, y1, x2, y2, PosX1, PosY1, PosX2, PosY2);
BMP1.Setsize(x1,y1);
BitBlt(BMP1, 0, 0, BMP1.width, BMP1.height, ThreadBMP, PosX1, PosY1);
BMP2.Setsize(x2,y2);
BitBlt(BMP2, 0, 0, BMP2.width, BMP2.height, ThreadBMP, PosX2, PosY2);
/// vergleiche BMP1 und BMP2
BMP1.SaveToFile(Filename);
end;
end;
BMP2.Free;
BMP1.Free;
end;
Die ThreadBMP ist eine private TBitMap vom Thread und wird beim create des Threads geladen (jeder Thread lädt eine andere Datei). LOW und HIGH sind feste Werte, die ich vorher schon berechnet habe.
Das Programm stürzt mal bei "SetSize()" und mal bei "SaveToFile" mit oben genannter Fehlermeldung ab.
Hat jemand eine Idee woran das liegen könnte?
Ich befürchte ja, dass es an den TBitMap liegt, aber jeder Thread hat ja seine eigenen lokalen Bitmaps und somit sollten sich die Threads eigentlich nicht in die Quere kommen...
Danke für eure Hilfe,
WXB