AW: TList mit Record füllen und an weitere TList übergeben
26. Aug 2016, 14:27
Scheinbar mag mich die Object-List nicht.
Kurze erklärung:
ich habe eine Liste von Dateien.
Die speichere ich mit noch ein paar anderen Informationen in diese "Instanzen" von TFileEntry ab.
Alle Instanzen kommen dann in ObjectList-A.
Nun gehe ich diese ObjectList-A durch und teile sie in n-Stückchen auf. Mit diesen Stücken werden Threads gefüttert und gestartet.
Bei 100 Instanzen erhält bei 5 Threads jeder Threads also 20 Instanzen, die er abarbeiten soll.
Mein einfacher Test:
es gibt 10 Instanzen und 2 Threads. 5 Pro Thread.
jetzt das Seltsame: beide Threads bekommen dieselbe Instanz!
Meine Logik ist also:
- Dateiliste erstellen
- Für jede Datei 1 Instanz von TFileEntry erstellen
- alle Instanzen in die ObjectList-A
Nun ObjectList-A.Count durch die Anzahl der Threads teilen. Ergibt 5 Instanzen pro Thread / 2 Threads.
Diese 5 Instanzen werden in eine temporäre ObjectList-B geschrieben, die kurz vorher außerhalb der for-schleife erzeugt wird.
Am ende der for-Schleife übergebe ich ObjectList-B an eine Procedur wo nichts weiter drin steht als, dass ein TThread erzeugt werden soll. Er hat ein Property und das ist eine ObjectList.
|