![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
![]() Здравствуйте, как можно сделать, что бы при старте потока проверялось, если он существует, то уничтожить его и запустить снова.
Пробовал так: Сам поток (лежит на модуле формы) Код:
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, а как на писать условие нигде нет. |