Forum: Programmieren allgemein
by Aviator,
26. Aug 2016
Wenn er die Instanz der ObjectList an den Thread weitergibt, dann brauch er sich diese nicht mehr zu merken. Die soll ja eh temporär sein. Dann kann der Thread beim Verlassen der Execute Methode auch gerade noch die ObjectList ins Nirvana wandern lassen.
Dann braucht er auch kein Array mehr mitzuschleppen in dem Dann u.U. die Instanzen noch hängen bleiben.
Forum: Programmieren allgemein
by Aviator,
26. Aug 2016
Das stimmt. Eigentlich müsste er sich seine Daten von TPersistent ableiten und die Assign Methode überschreiben. Dann hätte er keine gleichen Referenzen mehr und ein löschen/freigeben der Liste würde ihm nicht plötzlich alles um die Ohren fliegen lassen.
Forum: Programmieren allgemein
by Aviator,
26. Aug 2016
Das verstehe ich jetzt nicht. :roll:
Hier mal ein Beispiel wie ich es machen würde (ungetestet und nur hier runtergetippt):
try
for i := 0 to aGlobalVars.iMaxCopyThreadCount - 1 do
begin
Application.ProcessMessages; // <--- Das hier brauchst du normalerweise nicht, da die Aktion so schnell abläuft, dass du davon sehr wahrscheinlich nichts mitbekommst
Forum: Programmieren allgemein
by Aviator,
26. Aug 2016
Genau das war auch meine Vermutung @dGeek. Du übergibst dem Thread eine Instanz einer ObjectList und verwendest diese dann weiter. Du müsstest dir pro Durchlauf deiner äußersten Schleife eine neue Instanz der ObjectList erstellen. Die kannst du dann auch bedenkenlos nach Beendigung des Threads im Thread freigeben lassen.
Des Weiteren könntest du auch folgenden machen:
...
Forum: Programmieren allgemein
by Aviator,
26. Aug 2016
Zeig mal etwas SourceCode. Dann wird es vmtl. einfacher dir zu helfen. :cyclops:
Ich könnte mir vorstellen wo dein Fehler ist, aber ich will nicht wild drauf losraten. :stupid:
Forum: Programmieren allgemein
by Aviator,
26. Aug 2016
Tut es ja nicht. Ich würde behaupten er hat sich nur falsch ausgedrückt oder zu schnell geschrieben. Die Liste selbst bleibt durch ein Clear selbstverständlich erhalten. Nur die Items darin werden (sofern OwnsObjects auf True) freigegeben. OwnsObjects kann mein Create oder aber auch nachträglich als Eigenschaft der Liste auf False bzw. True gesetzt werden.