Danke, hat mir sehr geholfen.
Irgendwie werden nur die Texturen jetzt gar nicht mehr geladen
Mir fehlt aber jetzt auch die Zeit, um alles zu prüfen, werde es die nächsten tage nochmal durchgehen
Zu Peek: Neben Pop und Push hat eine Queue auch Peek (oder Top) als Methode, womit man das nächste Element anschauen kann, ohne es direkt mit Pop aus der Queue rauschmeißen zu müssen. Dh das Event muss nicht gefeuert werden, weil nix an der Queue verändert wird
Ich brauche es hier nicht wirklich, habe es nur der Vollständigkeits halber mit hingeschrieben ^^
Zu deinem Kommentar im Execute-Thread:
Wenn er vom Warten zurückkehrt, prüft er doch automatisch durch die umgebende Schleife auf Terminated, sodass eine zusätzliche Prüfung eigentlich nicht nötig sein sollte
Delphi-Quellcode:
procedure TTextureLoader.Execute;
begin
while not Terminated do begin
if (FQueue.Count = 0) then
FQueue.Event.Waitfor(INFINITE);
// Wenn er zurückkehrt, ist entweder ein neuer Job da, oder der Thread soll beendet werden.
// Da dies beim nächsten Schleifendurchlauf getestet wird, brauche ich es nicht extra zu behandeln ;)
// Wobei Terminated Vorrang hat, da zuerst die Schleife, und danach erst die IF-Anweisung geprüft wird
else begin
[...]
end;
end; // while
end;
____________________
EDIT:
Hab den Fehler gefunden: Wenn man natürlich auch weiterhin den TextureLoader-Thread mit
inherited Create(True);
beim Anlegen suspendiert, kann er ja nie zum Zuge kommen. Kaum macht man's richtig, schon funktioniert's
Danke nochmals für deine Hilfe, Sirius