Witam,
mam wątek:
tTwatek = class(TThread)
protected
czas : Real;
obraz : TImage;
procedure Execute; override;
procedure odswiez;
end;
Przy kazdym odswiezaniu zmienna "czas" zwiększa się o jeden. Chciałbym, aby po pewnym czasie wątek się sam zakończył.
Niby proste - odpowiedni warunek w Execute
procedure tTWatek.Execute;
begin
FreeOnTerminate := True;
while not Terminated do
begin
if czas>5 then
begin
TerminateThread(Handle,0);
obraz.Free;
// Form1.Button3.Click;
end;
Synchronize(odswiez);
Sleep(1000);
end;
end;
Niestety wątek się kończy, ale obrazek nie znika... Czy ktos to może wyjaśnić..?
Myslałem, że FreeOnTerminate załatwi wszystko, ale jednak nie.
Co ciekawe - dodałem przycisk i pod nim procedurę
procedure TForm1.Button3Click(Sender: TObject);
begin
TerminateThread(watek.Handle,0);
watek.obraz.Free;
end;
I to działa!!! - wątek się kończy i obraz znika, ale... musze sam kliknąć...
Jak widac próbowałem automatycznie wywołac kliknięcie tego przycisku, ale standardowo - wątek sie kończy, a obraz zostaje... :(
Byłbym wdzięczny za jakies wskazówki...