Günther: Bin mir nicht sicher, aber ich glaube in Delphi 2007 gibt es TThread.Finished nicht.
TThread.Terminate setzt ja nur die Boolean-Variable des Threads auf Terminated, ich kann ja (ohne das Finished von oben) nicht so einfach ohne eigene Variable feststelle, ob .Execute nun ordnungsgemäß beendet wurde?
Klar, es gibt Event.WaitFor. Damit habe ich noch nie gearbeitet, und es scheint doch unverhältnismäßig komplizierter zu sein, als eine einfache Booleanvariable im Thread.
Zumindest das Beispiel aus der
OH ist nicht wirklich selbsterklärend:
Delphi-Quellcode:
Event1.ResetEvent();
{ Ereignis vor der Ausführung der Threads zurücksetzen }
for i := 1
to Counter
do
TaskThread.Create(False);
{ Aufgaben-Threads erzeugen und ausführen }
if Event1.WaitFor(20000) <> wrSignaled
then
raise Exception;
{ nun den Haupt-Threads fortsetzen Alle Aufgaben-Threads sind beendet }
Woher weiß z.B. das Event, dass es auf
meinen Thread warten soll? Hier in dem Beispiel werden mehrere Threads erzeugt. Woher weiß das Event, dass alle fertig sind? Wird wrSignaled immer von Thread nach der Beendigung von Terminate gesetzt? Fragen über Fragen.
Weiterhin Danke an Alle!