wątek problem z resume i suspend

0

mam sobie wątek i domyslnie go kreuje z parametrem false wiec leci od razu; mam sobie procedurke do pauzowania go i uruchamiania na nowo - wyglada ona tak :

begin
  if watek.Suspended then
    begin
      watek.Resume;
      watek.Suspended := False; // to dodalem pozniej a dlaczego opis ponizej
      btnPlay.Caption := 'Pause';
    end
    else
    begin
      watek.Suspend;
      btnPlay.Caption := 'Play';
    end;
end;

jak sie pierwszy raz kliknie na przycisk pauzujacy (btnPlay) to leci sobie kod

      watek.Suspend;
      btnPlay.Caption := 'Play';

grai buczy wartosc Suspended watku teraz jest na true i po ponownym odpaleniu przycisku odpala sie czesc

      watek.Resume;
      watek.Suspended := False; // to dodalem pozniej a dlaczego opis ponizej
      btnPlay.Caption := 'Pause';

no i w tym miejscu jest zonk bo po wykonaniu lini watek.Resume wartosc suspended pozstaje nadal True co jest dla mnie szokiem bo jak sie wniknie w resume to widac

procedure TThread.Resume;
begin
  if ResumeThread(FHandle) = 1 then FSuspended := False;
end;

ale dla pewnosci dodalem tam suspended na false ale i tak po wyjsciu z bloku kodu nadal jest true

o co biega ??
z gory dzieki za info - jest to dla mnie wazne i pilne ;(

0

czemu to nie działa ? nie wiem i nie chcę wiedzieć. zaglądnałem do swojej analogicznej procedurki i nie wiem czemu (nie pamiętam?) ale nie używam tej właściwości, może też miałem z nią problemy ?

masz za to takie dwie inne możliwości:
1)zrobić własną zmienną globalną Suspended:boolean
2)przy określaniu stanu wątka posłużyć się aktualnym captionem przycisku

0

juz chyba to zrobielm :)
problem polegal na tym ze procedura w execute trwala niedlugo i nie moglem go po czasie resume bo juz byl zakonczony

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