![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Новичок
Джуниор
Регистрация: 15.07.2012
Сообщений: 8
|
![]()
Здравствуйте у меня возникла такая проблема есть поток в потоке выполняются действия с визуальными компонентами (ПС раньше была процедура без потока вида
Procedure PR (Fam: String; Name: String; Sym:Tmemo); но при ее выполнении все наглухо зависало до завершения так вот в потоке все работает нормально без зависаний есть но при закрытии программы вылетает ошибка недопустимый дескриптор окна (компоненты это то же окна я так понимаю) код потока Код:
ей нужно 5 раз передать параметры вида PR(‘Фамилия’, ‘Имя’, Memo1.text); Спасибо за внимание |
![]() |
![]() |
![]() |
#2 |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
![]()
Синхронизацию опиши в потоке.
Почитай про Synchronize. В хелпе и даже в шаблоне Thread от Делфи есть примеры.
I'm learning to live...
|
![]() |
![]() |
![]() |
#3 |
Участник клуба Подтвердите свой е-майл
Регистрация: 26.01.2008
Сообщений: 1,899
|
![]()
Нельзя в потоке напрямую обращаться к VCL - это может вызвать фаталити.
|
![]() |
![]() |
![]() |
#4 |
Новичок
Джуниор
Регистрация: 15.07.2012
Сообщений: 8
|
![]()
ну делаю я так объявляю глобальную переменную типа Tmemo потом ей присваиваю memo1 потом пишу synchronize(Start); где START это
Код:
|
![]() |
![]() |
![]() |
#5 |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
![]()
При закрытии программ нужно все потоки завершать.
Ты когда этот поток стартуешь?
I'm learning to live...
|
![]() |
![]() |
![]() |
#6 |
Новичок
Джуниор
Регистрация: 15.07.2012
Сообщений: 8
|
![]()
а расчет происходит в процедуре execute (в потоке) то есть в место memo1.text в потоке я пишу MyMemo.text (хотя по моему я творю бред)
![]() стартую с таймера при открытии формы запускается таймер он запускает поток вот код Код:
Последний раз редактировалось Stilet; 15.07.2012 в 22:18. |
![]() |
![]() |
![]() |
#7 | ||
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
![]() Цитата:
Цитата:
I'm learning to live...
|
||
![]() |
![]() |
![]() |
#8 |
Новичок
Джуниор
Регистрация: 15.07.2012
Сообщений: 8
|
![]() |
![]() |
![]() |
![]() |
#9 | |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
![]()
Вот легкий пример без синхронизации:
Код:
Цитата:
I'm learning to live...
|
|
![]() |
![]() |
![]() |
#10 |
Новичок
Джуниор
Регистрация: 15.07.2012
Сообщений: 8
|
![]()
Stilet спасибо буду пробовать if not tt.Terminated then tt.Terminate; как я понял завершение потока ?
![]() |
![]() |
![]() |
![]() |
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Глюк VCL | НЕ_АЙС | Компоненты Delphi | 4 | 03.08.2014 04:43 |
Класс запускает поток, который заполняет этот класс. Обмен класс <=> поток. | Человек_Борща | Общие вопросы Delphi | 8 | 27.02.2012 23:24 |
Поток. Не получается создать поток. Выдает ошибки при запуске | bigory | Общие вопросы по Java, Java SE, Kotlin | 3 | 23.09.2010 00:40 |
Перлы VCL | Квэнди | Свободное общение | 7 | 13.02.2009 09:08 |
VCL | Э/\bФ_}{P | Свободное общение | 2 | 21.05.2007 00:21 |