Thread-Ende abfangen

broetchen

Erfahrenes Mitglied
moin

Wirft ein Thread irgendeinen Event wenn er fertig ist?

Oder besser gesagt, wie kann ich wissen wann der Thread zu ende ohne andauernd die ThreadState abzufragen

mfg broetchen
 
Hi broetchen,

- versuche es doch mal mit der Thread-Methode Join. Der aufrufende Thread (im Regelfall der Mainthread) wird angehalten und erst nach beenden des Threads wird an der Stelle weiter gemacht, wo join aufgerufen wurde.

- Wenn der Mainthread nicht angehalten werden darf, kannst Du noch mit der isAlive Eigenschaft den Ausführungsstatus zu gegebener Zeit abfragen.

- Du kannst Dir auch ein Flag mit einer boolschen Variablen setzen. Wenn die Methode, die im zweiten Thread läuft, zuende ist, setzt Du das Flag auf true.

- Ein Thread läuft übrigens immer 20ms, dann der nächste und ...

Asterix :)
 
moin


d.h. sowas wie einen Event gibt es nicht

mein Problem ist eigentlich der Bildschirmaufbau.
Während der OnLoad-Methode starte ich eine recht rechner-intensive Rechenkette die anscheinend soviel CPU-Zeit verblässt, dass der Bildschirmaufbau hinterherhinkt.

Das wollte ich mittels eines Threads eigentlich beheben, nur kann ich mit dem Rest der Berechnung erst dann weitermachen, wenn der Thread beendet worden ist.

Da hab ich mir gedacht, es gibt vielleicht nen "ThreadFinished"-Event oder sowas!?

mfg broetchen
 
Hallo broetchen,

wie wäre es, wenn Du zwischendurch in der Rechenkette ein paar Mal Application.DoEvents() aufrufst.
Damit werden alle ausstehenden Operationen ausgeführt.

Asterix
 
Du kannst dir selber das Finish Event machen.

Du machst einfach nen try catch finally block um den Inhalt der Thread Methode und im finally schubst du irgend ein Event an. Der Thread läuft dann so lange weiter bis das Event verarbeitet wurde.

Zu beachten ist halt, dass das Event dann auch in diesem Thread ausgeführt wird, wenn du etwas machen willst NACHDEM der Thread zu Ende ist kannst dus nur über nen Flag machen
 
Zurück