|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
15.07.2012, 21:21 | #1 |
Новичок
Джуниор
Регистрация: 15.07.2012
Сообщений: 8
|
Поток VCL компоненты
Здравствуйте у меня возникла такая проблема есть поток в потоке выполняются действия с визуальными компонентами (ПС раньше была процедура без потока вида
Procedure PR (Fam: String; Name: String; Sym:Tmemo); но при ее выполнении все наглухо зависало до завершения так вот в потоке все работает нормально без зависаний есть но при закрытии программы вылетает ошибка недопустимый дескриптор окна (компоненты это то же окна я так понимаю) код потока Код:
ей нужно 5 раз передать параметры вида PR(‘Фамилия’, ‘Имя’, Memo1.text); Спасибо за внимание |
15.07.2012, 21:36 | #2 |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Синхронизацию опиши в потоке.
Почитай про Synchronize. В хелпе и даже в шаблоне Thread от Делфи есть примеры.
I'm learning to live...
|
15.07.2012, 22:06 | #3 |
Участник клуба Подтвердите свой е-майл
Регистрация: 26.01.2008
Сообщений: 1,897
|
Нельзя в потоке напрямую обращаться к VCL - это может вызвать фаталити.
|
15.07.2012, 22:09 | #4 |
Новичок
Джуниор
Регистрация: 15.07.2012
Сообщений: 8
|
ну делаю я так объявляю глобальную переменную типа Tmemo потом ей присваиваю memo1 потом пишу synchronize(Start); где START это
Код:
|
15.07.2012, 22:13 | #5 |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
При закрытии программ нужно все потоки завершать.
Ты когда этот поток стартуешь?
I'm learning to live...
|
15.07.2012, 22:13 | #6 |
Новичок
Джуниор
Регистрация: 15.07.2012
Сообщений: 8
|
а расчет происходит в процедуре execute (в потоке) то есть в место memo1.text в потоке я пишу MyMemo.text (хотя по моему я творю бред)
стартую с таймера при открытии формы запускается таймер он запускает поток вот код Код:
Последний раз редактировалось Stilet; 15.07.2012 в 22:18. |
15.07.2012, 22:18 | #7 | ||
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Цитата:
Цитата:
I'm learning to live...
|
||
15.07.2012, 22:21 | #8 |
Новичок
Джуниор
Регистрация: 15.07.2012
Сообщений: 8
|
|
15.07.2012, 22:32 | #9 | |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Вот легкий пример без синхронизации:
Код:
Цитата:
I'm learning to live...
|
|
15.07.2012, 22:37 | #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 |