Zakonczone watki

0

Mam jakis watek, wykonuje sie dosc dlugo. Moge sobie nim sterowac przy pomocy na przyklad buttona.

    if ft.suspended then 
         ft.Resume 
    else 
         ft.Suspend;

Wszystko fajnie - ale jak w tej obsludze wykryc, ze watek zostal zakonczony? Bo w takiej sytuacji otrzymuje komunikat: "Thread error. Nieprawidlowe dojscie (6)"
Czy tylko poprzez try..except?

0

O ile dobrze pamiętam to jest takie coś:
<code class="delphi">TThread.Terminated</code>
które zwraca wartosc boolean

0

O ile dobrze pamiętam to jest takie coś:
<code class="delphi">TThread.Terminated</code>
które zwraca wartosc boolean

Owszem, jest - ale dziala tylko z wnetrza watku i wbrew nazwie wcale nie oznacza ze watek sie zakonczyl. Poza tym ja sie pytam jak wykryc ze watek jest dead. Widze ze bez jakiegos spisu watkow sie nie obejdzie :/

0

moze na koncu watku ustawiaj jakas globalna zmienna typu boolean i potem ja sprawdzaj.

0

moze na koncu watku ustawiaj jakas globalna zmienna typu boolean i potem ja sprawdzaj.

Ja tak często robie, bo na razie nie odkryłem żadnego innego sposobu, a te TThread.Terminated widziałem w źródłach TGaduGadu, jak je jakiś czas temu przeglądałem.

0

moze na koncu watku ustawiaj jakas globalna zmienna typu boolean i potem ja sprawdzaj.

Watkow bedzie za duzo i nie da sie okreslic z gory ile, dlatego mowilem o jakiejs liscie - ale myslalem ze moze da sie uniknac grzebania w kodzie. Dzieki anyway :)

0

A nie możesz zrobić tak:

dzialajaceWatki:array of boolean

Wtedy ilosc masz przez:

length(dzialajaceWatki)

a zmieniasz przez setlength. Oczywiscie mozesz sobie zrobic record i tablice jego obiektów:

_dzialajaceWatki=record
watek:TThread;
dzialajacy:boolean;
end;

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