thread.terminate

0

Witam
tworze sobie sliczny watek i smiga jak zloto!

ale kiedy postanawiam go przerwac, piszac:

moj_watek.terminate; 

to przy zamykaniu programu, lub kolejnym uruchomieniu watku wyskakuje blad.

czy trzeba jeszcze cos robic przy przerywaniu watkow?

ha, sam znalazlem!

jesli uzyje funkcji

 moj_watek.terminate;

to pojawiaja sie problemy a jesli uzyje czegos takiego:

TerminateThread(moj_watek.Handle,0);

to wszystko jest w najlepszym pozadku.

jak by ktos mial pomysl dlaczego tak sie dzieje to bardzo prosze o kilka slow komentarza.

0
Johny_Morfina napisał(a)

ha, sam znalazlem!

jesli uzyje funkcji

 moj_watek.terminate;

to pojawiaja sie problemy a jesli posloze sie czyms takim:

TerminateThread(moj_watek.Handle,0);

to wszystko jest w najlepszym pozadku.

jak by ktos mial pomysl dlaczego tak sie dzieje to bardzo prosze o kilka slow komentarza.

Rozumiem że korzystasz z klasy TThread. Problemu by nie było i w poprzednim kodzie gdybyś po utworzeniu watku ustawił jego właściwość FreeOnTerminate na True.

0
kAzek napisał(a)

Rozumiem że korzystasz z klasy TThread. Problemu by nie było i w poprzednim kodzie gdybyś po utworzeniu watku ustawił jego właściwość FreeOnTerminate na True.

oczywiscie wpisalem ta linijke na samym poczatku i pomimo jej obecnosci blad pojawial sie...

problem chyba musi wynikac z czegos innego:/

0
Johny_Morfina napisał(a)
kAzek napisał(a)

Rozumiem że korzystasz z klasy TThread. Problemu by nie było i w poprzednim kodzie gdybyś po utworzeniu watku ustawił jego właściwość FreeOnTerminate na True.

oczywiscie wpisalem ta linijke na samym poczatku i pomimo jej obecnosci blad pojawial sie...

problem chyba musi wynikac z czegos innego:/

Dziwne, nigdy nie miałem problemów gdy to ustawiłem :-/ Gdybyś rzucił kawałek kodu jak tworzysz wątek to bym sprawdził co jest nie tak.

0

Terminate jedynie ustawia flagę Terminated, nie kończy wątku.

W pętli wątku musisz sam sprawdzać tę flagę i jeśli będzie ustawiona, wyjść. Nie zapominając o FreeOnTerminate - o ile nie zwalniasz w inny sposób.

1 użytkowników online, w tym zalogowanych: 0, gości: 1