"The shell stopped unexpectedly and Explorer.exe was restarted."
Verwijderd
Een lijstje ervan bijhouden in je main thread, en na het wachten allemaal vrijgeven, denk ik.
Maar wanneer geef ik ze dan vrij als ik er niet op wacht. Dus als een thread gewoon klaar is en de applicatie niet wordt gesloten.
"The shell stopped unexpectedly and Explorer.exe was restarted."
Verwijderd
Hmmm...
Het eerste wat me te binnen schiet:
Zet een eigen OnTerminate handler. Die kan aan de hand van een variabele (ofzo) in de main thread zien of er afgesloten/gewacht wordt of niet.
Zoniet, dan Free't hij de thread. Zowel, dan doet hij niets.
Van de smerige kant, als je programma afgesloten wordt boeit het ook niet veel of je Thread objects wel of niet vrijgegeven worden, want zodra je proces afgelopen is wordt al het gealloceerde geheugen toch vrijgegegeven.
Het eerste wat me te binnen schiet:
Zet een eigen OnTerminate handler. Die kan aan de hand van een variabele (ofzo) in de main thread zien of er afgesloten/gewacht wordt of niet.
Zoniet, dan Free't hij de thread. Zowel, dan doet hij niets.
Van de smerige kant, als je programma afgesloten wordt boeit het ook niet veel of je Thread objects wel of niet vrijgegeven worden, want zodra je proces afgelopen is wordt al het gealloceerde geheugen toch vrijgegegeven.
Wat je ook kan doen is de thread een message laten sturen (wel gesynchonised) naar de main thread welke dan weer de thread die de message verstuurde opschoont.
"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney
Verwijderd
Je kan de API functie WaitForMultipleObjects gebruiken, zie MSDN. Hiervoor heb je een array met thread-handles nodig (TThread.Handle). Een registratie systeem voor threads is dus wel nodig.
Pagina: 1