Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2010.08.27;
Скачать: CL | DM;

Вниз

Поясните пожалуйста значение свойства TThread.FreeOnTerminate   Найти похожие ветки 

 
Nilman ©   (2010-02-09 13:45) [0]

Сразу прошу прощения за глуповатый на мой взгляд вопрос, но сам разобраться не могу!) Как понял из хелпа, свойство FreeOnTerminate автоматически уничтожает созданный мной TThread. Но как-то он у меня не разрушается после завершения потока.. Создал поток:
 ScanThread := TScanThread.Create(True);
 ScanThread.Priority := tpNormal;
 ScanThread.FreeOnTerminate:=True;
 ScanThread.OnTerminate:=FOnScanThreadTerminate;
 ScanThread.Resume;

После завершения потока, сработало FOnScanThreadTerminate, после этого нажимаю на кнопку, на OnClick которой задано:

 if Assigned(ScanThread) then ShowMessage("assigned") else ShowMessage("not assigned");

После завершения потока, нажатие на кнопку отвечает сообщением assigned, а насколько я понял, я должен получать not assigned.. Подскажите пож, что не так делаю?


 
Ega23 ©   (2010-02-09 14:16) [1]


> После завершения потока, нажатие на кнопку отвечает сообщением
> assigned, а насколько я понял, я должен получать not assigned.
> . Подскажите пож, что не так делаю?


Вот у тебя есть знакомый. У тебя в блокноте записан его адрес. И вдруг твой знакомый помер. У тебя запись в блокноте исчезнет сама-собой?

У тебя есть указатель на экземпляр класса. Ты вызвал деструктор, память по этому адресу освободилась. Но это не значит, что значение указателя моментально обнулилось.


 
12 ©   (2010-02-09 14:18) [2]

а это не тот случай?

var P: Pointer;
begin
 P := nil;
 if Assigned (P) then Showmessage ("1");
 GetMem(P, 1024); {P valid}
 FreeMem(P, 1024); {P no longer valid and still not nil}
 if Assigned (P) then Showmessage ("2");


 
Nilman ©   (2010-02-09 14:20) [3]

А что значит моментально? Кнопку с проверкой на Assigned( нажимаю не раньше секунды.. Или там вообще не определённое время? Если так, то как мне всё таки проверить существует ли экземпляр TThread?


 
Nilman ©   (2010-02-09 14:23) [4]


> 12 ©

Судя по всему аналогичный, тогда вопрос немного другой, можно ли как нибудь узнать, выделили ли мы память под P, и сделать это без своих каких то доп. переменных?


 
Ega23 ©   (2010-02-09 14:29) [5]


> А что значит моментально? Кнопку с проверкой на Assigned(
> нажимаю не раньше секунды.. Или там вообще не определённое
> время? Если так, то как мне всё таки проверить существует
> ли экземпляр TThread?


Да хоть пицот раз нажимай. Пока ты САМ не изменишь его на nil - за тебя его никто не изменит.
Ну на крайняк - шли нотификацию из треда, мол - мне кирдык, я разрушаюсь.


 
Германн ©   (2010-02-09 14:41) [6]


> Ega23 ©   (09.02.10 14:16) [1]
>
>

В оригинале была телефонная книжка.


 
Nilman ©   (2010-02-09 15:40) [7]

Спасибо всем, вопрос снят!



Страницы: 1 вся ветка

Текущий архив: 2010.08.27;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.074 c
2-1274169749
Sergey2
2010-05-18 12:02
2010.08.27
Перехватить ошибку при выполнении хранимой процедуры


9-1186514939
max_
2007-08-07 23:28
2010.08.27
поиск столкновений


15-1264580056
12
2010-01-27 11:14
2010.08.27
А кто-то во что-то играет?Интересуют неглупые стрелялки от 1 лица


2-1269178623
Delphist2
2010-03-21 16:37
2010.08.27
динамический массив


3-1243599010
TheEd
2009-05-29 16:10
2010.08.27
Как правильнее не раздувая базу, хранить в ней множество картинок