Здравствуйте, как можно сделать, что бы при старте потока проверялось, если он существует, то уничтожить его и запустить снова.
Пробовал так:
Сам поток (лежит на модуле формы)
Код:
type
thread = class(tthread)
private
procedure create;
procedure load;
procedure show;
procedure resiz;
public
procedure execute; override;
end;
Выполнение
Код:
procedure thread.Execute;
begin
load;
synchronize(create);
sleep(50);
synchronize(show);
sleep(50);
if str=true then synchronize(resiz);
pot:=nil;
end;
Запуск
Код:
if pot<>nil then
begin
pot.Terminate;
pot:=nil;
end;
pot:=thread.Create(true);
pot.FreeOnTerminate:=true;
pot.Priority:=tpnormal;
pot.Resume;
И если много раз запустить его, то он не уничтожается. А т.к. поток работает с компонентами на форме, происходит AV.
Даже проверял, убирал все процедуры, кроме одной, в ней писал:
memo....add('поток запущен');
sleep(5000);
memo....add('поток завершён');
Нажимал быстро раз 10 на кнопку, которая запускает поток, и через пять секунд в мемо десять раз написало "поток завершён"
Помогите пожалуйста. Поиск не помог, почти все темы про Terminate, а как на писать условие нигде нет.