Форум: "Начинающим";
Текущий архив: 2012.04.22;
Скачать: [xml.tar.bz2];
ВнизTPotok_Com.Terminate Найти похожие ветки
← →
TThread (2011-12-29 01:55) [0]Приветствую всех!
Подскажите ответ на такой вопрос
останавливаю поток
вот таким кодом
TPotok_Com.Terminate
далее запускаю процедуру
if (not Assigned(TPotok_Com)) then
Begin
TPotok_Com := TPotok.Create(False);
TPotok_Com.FreeOnTerminate := True;
TPotok_Com.Priority := tpLower;
TPotok_Com.Resume;
End;
Но TPotok_Com - почему то Assigned
И он его соответсвенно заново не создаёт.Мастера, подскажите что делаю не так?
← →
RWolf © (2011-12-29 02:07) [1]Assigned — это всего лишь проверка указателя на <>nil.
При уничтожении объекта указатель на него не обнуляется, так что условие не сработает.
Поток останавливают так:
thread.Terminate; //предлагаем потоку остановиться
thread.WaitFor; //ждём, пока поток соизволит отреагировать
← →
vegarulez (2011-12-29 02:09) [2]а как тогда потом указатель очистить?
мне же надо убедится что он действительно убит? чтобы второй такой же не создать? или я неправ?
← →
KilkennyCat © (2011-12-29 02:10) [3]
> И он его соответсвенно заново не создаёт
конечно. он же не уничтожен. уничтожить - Free (полезно прочитать еще про FreeOnTerminate)
> Мастера, подскажите что делаю не так?
что обычно - не прочитал справку.
← →
RWolf © (2011-12-29 02:11) [4]после возврата из WaitFor поток, очевидно, прекратил своё выполнение, вне зависимости от того, уничтожен его объект или нет.
← →
Германн © (2011-12-29 02:12) [5]
> Но TPotok_Com - почему то Assigned
>
А почему и с какого перепугу он должен быть не Assigned?
Ну когда же вы начнёте читать? Хотя бы учебники.
Free всего лишь отвечает за освобождение памяти, которую занял экземпляр класса. А функция Assigned всего лишь проверяет на ноль/nil указатель на тот самый экземпляр. А кто её будет обнулять? Пушкин или Гоголь?
← →
Германн © (2011-12-29 02:14) [6]
> vegarulez (29.12.11 02:09) [2]
>
> а как тогда потом указатель очистить?
>
А зачем вмешиваться со своими вопросами в чужой топик?
← →
vegarulez (2011-12-29 02:18) [7]2 KilkennyCat © (29.12.11 02:10) [3]
FreeOnTerminate:=True
По идее же должен очиститься?
2 RWolf © (29.12.11 02:11) [4]
Waitfor вообще ощибку выдает - Tthread Error: Неверный дескриптор (6)
2 Германн © (29.12.11 02:12) [5]
Подскажите пожалуйста как очистить указатель на экземпляр?
← →
vegarulez (2011-12-29 02:19) [8]Германн © (29.12.11 02:14) [6]
Топик мой - просто с рабочего компа написал.
Логин подписал уже в коментах к нему.
← →
Германн © (2011-12-29 02:25) [9]
> 2 Германн © (29.12.11 02:12) [5]
> Подскажите пожалуйста как очистить указатель на экземпляр?
>
>
> останавливаю поток
> вот таким кодом
>
> TPotok_Com.Terminate
TPotok_Com:=nil.
← →
RWolf © (2011-12-29 02:32) [10]
>
> Waitfor вообще ощибку выдает -
> FreeOnTerminate:=True
вот потому и выдаёт, что уничтожается сразу после завершения.
← →
vegarulez (2011-12-29 02:32) [11]Германн © (29.12.11 02:25) [9]
Спасибо. Заработало.
Почитал про TThread - насторожил момент про WaitFor который у меня почему-то выдаёт ошибку.
Просто если вдруг потоку будет дана команда на остановку
TPotok_Com.Terminate
TPotok_Com:=nil
но он ещё не закончит свою работу - а я его уже следом процедурой вызываю опять.
Подскажите как сделать правильно WaitFor - чтобы дождаться его 100% завершения и только потом переходить на процедуру запуска?
← →
vegarulez (2011-12-29 02:34) [12]2 RWolf © (29.12.11 02:32) [10]
Ок - сейчас попробую исправить, то что написал в vegarulez (29.12.11 02:32) [11]
← →
Германн © (2011-12-29 02:40) [13]
> vegarulez (29.12.11 02:32) [11]
>
> Германн © (29.12.11 02:25) [9]
>
> Спасибо. Заработало.
>
Совет номер раз. Используй только один ник в своём
вопросе. Иначе трудно отвечать на "твои" вопросы.
← →
vegarulez (2011-12-29 02:47) [14]vegarulez (29.12.11 02:19) [8]
На домашнем компе просто ник сразу вставляется - на рабочем - нет.
← →
vegarulez (2011-12-29 03:00) [15]RWolf © (29.12.11 02:32) [10]
Ок - заработало.
Мастера - спасибо за помощь!
← →
KilkennyCat © (2011-12-29 03:01) [16]
> На домашнем компе просто ник сразу вставляется - на рабочем
> - нет.
ночью - одна, днем - другая (с) Шрек
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2012.04.22;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.004 c