Форум программистов, компьютерный форум, киберфорум
Наши страницы

Delphi

Войти
Регистрация
Восстановить пароль
 
Milord
4 / 4 / 1
Регистрация: 03.11.2009
Сообщений: 91
#1

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

14.05.2013, 12:12. Просмотров 794. Ответов 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):

потоки? - Delphi
юзаю TForm1.FormKeyDown, TForm1.FormKeyPress, TForm1.FormKeyUp хочу добится того чтобы можно было нажать 2 клавиши и вторая не перебивала...

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

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

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

Потоки и события - Delphi
Добрый день. Пишу класс для работы со считывателем бесконтактных карт. Считыватель подключается к COM-порту, и имеет странный протокол...

Программные потоки - Delphi
Программа должна выполнять поиск элемента в файле через два программных потока(двумя разными способами).. Вот часть кода программы, где...

1
mss
2334 / 2253 / 250
Регистрация: 24.12.2010
Сообщений: 13,727
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
Доброго времени суток! Функция в длл создает форму, объявленной в той же длл. Вызвав функцию из главного потока программы - все ок! ...

Потоки и глобальные переменные - Delphi
Здравствуйте, у меня проблема. Я имею глобальный массив из объектов с атрибутами (X,Y,Z,Ширина,Высота и т.д.) Моя программа имеет...

Потоки [медленное выполнение] - Delphi
Код в главной форме выполняется за секунд 10, тогда как в дополнительном потоке(1 или нескольких без разницы) код работает в разы медленнее...

Delphi потоки процесса - Delphi
зная процесс нужно вывести его потоки, кто знает как это реализовать? с примерчиком если можно или ссылку на исходник... помогите...


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

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

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