Показать сообщение отдельно
  #11  
Старый 18.12.2013, 18:20
Аватар для poli-smen
poli-smen poli-smen вне форума
Профессионал
 
Регистрация: 06.08.2012
Адрес: Кривой Рог
Сообщения: 1,791
Версия Delphi: Delphi 7, XE2
Репутация: 4415
По умолчанию

Цитата:
Сообщение от mustimur
Однако в свое оправдание приведу цитату из официального хелпа (он меня и направил на ложный путь порока: обращения к мертвым потокам):
Цитата:
Finished is True when the thread execution is completed or terminated, and False otherwise. This property is read-only.
Т.е. оно True когда поток закончен или уничтожен..... Или я поть не правильно что-то понял?
Да. Понял не правильно. Поток (Thread) и объект потока (т.е. экземпляр класса TThread) это вещи совершенно разные. С потоками можно работать и не используя объекты класса TThread, используя вместо этого стандартные API-функции CreateThread, ResumeThread и т.д. Потоки это обычная возможность Windows (просто обычная процедура выполняющаяся параллельно), а TThread это разработка Borland (теперь это Embarcadero) - класс, на основе которого создаются объекты. Уничтожен может быть объект потока (т.е. класса TThread), а поток он не уничтожается, а просто завершается. Вот при "FreeOnTerminate:=True" объект класса TThread саморазрушится когда параллельный поток завершится, а при "FreeOnTerminate:=False" объект будет жить и хранить все свои данные и после завершения работы потока - такой объект нужно разрушать самостоятельно (Free) чтобы не было утечек памяти.
Ответить с цитированием