Forum: Die Delphi-IDE
by haentschman,
1. Sep 2015
8-) Update...
2 Tage in der falschen Richtung gesucht. :evil: Es liegt definitiv nicht an den Threads. Das funktioniert hervorragend. Der bewußte Thread macht eine Datenübernahme aus einer alten Datenbankstruktur in eine neue Struktur. Weil ich noch in der Entwicklung bin wird jeder Step gleich commited (damit ich kontrollieren kann). Später läuft das in einer Transaktion. Dies habe ich nun...
Forum: Die Delphi-IDE
by haentschman,
1. Sep 2015
Hallo Maverik,
wie du schon sagtest. Das ist der Rumpf mit den Events und der "Habe fertig" Logik. Auf TWorker setzen dann die eigentlichen Worker auf. Die Liste dient nur der Verwaltung der Threads (jeder Thread trägt sich quasi selbst aus der Liste aus).
Ich hatte das eigentlich nur mit angeführt um die Zusammenhänge besser zu erklären. Das Konstrukt funktioniert in einem anderen Projet...
Forum: Die Delphi-IDE
by haentschman,
1. Sep 2015
Hallo...
...alles im Threadrumpf bzw der Liste.
const
PM_Finish_Thread = WM_USER + 1;
procedure TdWorkerList<T>.Remove(aThread: TThread);
begin
aThread.Terminate;
Forum: Die Delphi-IDE
by haentschman,
1. Sep 2015
Handling:
1. eigenen Worker bauen mit = class(TWorker)
2. Worker Liste instanzieren
3. Worker instanzieren
4. Worker in die Liste legen.
5. der Rest geht fast von selbst...:zwinker:
6. Das Wegwerfen der Liste hat ein koordiniertes Aufräumen der Threads zur Folge. (selbstverständlich sollte im Thread, je nach Komplexität, mehrfach auf Terminated geprüft werden. Sonst läuft der Thread...
Forum: Die Delphi-IDE
by haentschman,
1. Sep 2015
Hallo Alle...:P
Ich hätte gern mal ein Problem...8-)
Ich arbeite gern und viel mit WorkerThreads. Dafür benutze ich keine Bibliothek wie Omni sondern ein einfaches Konstrukt für TThread in Kombination mit einer Liste dafür. Die Threads melden ihre Fertigstellung über eine Message bei der Liste an und die Liste trägt ihn aus.
Soweit so gut funktioniert das stabil und zuverlässig. Bei dem...