Форум программистов, компьютерный форум, киберфорум
Наши страницы
Delphi
Войти
Регистрация
Восстановить пароль
 
Milord
4 / 4 / 1
Регистрация: 03.11.2009
Сообщений: 91
#1

Потоки в делфи - Delphi

14.05.2013, 12:12. Просмотров 838. Ответов 1
Метки нет (Все метки)

Доброго дня уважаемые!
Вот день пробился с потоками (MyThread = class(TThread)), так и не допер. Ситуация такая: Создаем поток, настраиваем, запускаем. Он все хорошо, отрабатывает и сам себе харакири Destroy делает (MyThread.Destroy), но притом забывает себе сделать MyThread=NIL (или скорее всего не может). Вопрос а как отловить при закрытии программы что MyThread уже самоуничтожился? если мы принудительно делаем MyThread.Destroy то возникает ошибка "AV" так как MyThread это уже "мусор"...
И второй вопрос, если поток не самоуничтожился и мы делаем MyThread.Destroy при закрытии программы то все ровно ошибка "AV". Разве Destroy не должен нормально убить поток? Destroy переопределен и в нем все классы созданные в потоке убиваются...
Можно привести пример... но эти два вопроса не первый раз всплывают в разных задачах при "серьезных" потоках.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.05.2013, 12:12
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Потоки в делфи (Delphi):

потоки?
юзаю TForm1.FormKeyDown, TForm1.FormKeyPress, TForm1.FormKeyUp хочу добится...

Потоки и события
Добрый день. Пишу класс для работы со считывателем бесконтактных карт....

Потоки в Delphi
Доброе время суток, форумяне:))! Суть вопроса в следующем. Есть функция...

Таймеры и потоки.
Верно ли, что события OnTimer абсолютно всех таймеров принадлежит VCL потоку?...

Программные потоки
Программа должна выполнять поиск элемента в файле через два программных...

Объекты и потоки
Доброго времени суток! Функция в длл создает форму, объявленной в той же длл....

1
mss
2631 / 2256 / 275
Регистрация: 24.12.2010
Сообщений: 13,725
14.05.2013, 14:37 #2
При условии необходимости контроля за стадией разрушения потоком самого себя использование режима FreeOnTerminate = True не оправдано и лишь усложняет задачу.

Цитата Сообщение от Milord Посмотреть сообщение
забывает себе сделать MyThread=NIL (или скорее всего не может)
Конечно не может. Откуда же объекту-потоку знать сколько переменных в программе на него ссылаются в произвольный момент времени ? Может ни одной, а может более одной..

Это вообще не его задача - следить за ссылками на самого себя.
Для возможности контроля извне за состоянием завершения своей работы поток предоставляет событие OnTerminate и вирт.метод DoTerminate.
В обработчике OnTerminate (выполняющемся в основном потоке) внешний код может произвести обниление нужных ссылок на этот поток.
Тоже самое в принципе можно сделать и в перекрытом методе DoTerminate, выполняющемся в контексте доп.потока.
Но ни в коем случае ни в OnTerminate ни в DoTerminate нельзя вызывать деструктор доп.потока - важно понимать что в момент OnTerminate и DoTerminate доп.поток все еще выполняется и его объектная оболочка ему нужна вплоть до его фактического завершения, которое произойдет после завершения обработки OnTerminate и DoTerminate.
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.05.2013, 14:37
Привет! Вот еще темы с решениями:

Потоки в Delphi
Вот у меня возник такой вопрос ? у меня есть задание нужно создать пример...

"Делфи" vs. "Делфи для начинающих" )
Добрый день. Интересует такой вопрос: для чего разделение на "Делфи" и "Делфи...

формы, потоки и TWebBrowser
первый вопрос такой - пишу прогу консольную, создаю окно через winapi,...

Выводит не те данные (потоки)
Всем привет Столкнулся с проблемой, программа выдает не те данные Т.е...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru