thread.terminate

Johny_Morfina
  • Rejestracja:ponad 22 lata
  • Ostatnio:około 5 lat
  • Postów:448
0

Witam
tworze sobie sliczny watek i smiga jak zloto!

ale kiedy postanawiam go przerwac, piszac:

Kopiuj
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

Kopiuj
 moj_watek.terminate;

to pojawiaja sie problemy a jesli uzyje czegos takiego:

Kopiuj
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.


KA
  • Rejestracja:prawie 20 lat
  • Ostatnio:minuta
  • Lokalizacja:Gorlice
0
Johny_Morfina napisał(a)

ha, sam znalazlem!

jesli uzyje funkcji

Kopiuj
 moj_watek.terminate;

to pojawiaja sie problemy a jesli posloze sie czyms takim:

Kopiuj
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.


Nie odpowiadam na PW w sprawie pomocy programistycznej.
Pytania zadawaj na forum, bo:
od tego ono jest ;) | celowo nie zawracasz gitary | przeczyta to więcej osób a więc większe szanse że ktoś pomoże.
Johny_Morfina
  • Rejestracja:ponad 22 lata
  • Ostatnio:około 5 lat
  • Postów:448
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:/


KA
  • Rejestracja:prawie 20 lat
  • Ostatnio:minuta
  • Lokalizacja:Gorlice
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.


Nie odpowiadam na PW w sprawie pomocy programistycznej.
Pytania zadawaj na forum, bo:
od tego ono jest ;) | celowo nie zawracasz gitary | przeczyta to więcej osób a więc większe szanse że ktoś pomoże.
pq
  • Rejestracja:około 23 lata
  • Ostatnio:około 14 lat
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.


"Ecie pecie - odparłem. - Wiadomo, że wszystkiemu winien komputer. Ten brzydal!" (Lem)

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.