![]() |
|
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]()
|
|
| Gershkovich |
|
||||||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 243 Регистрация: 8.2.2006 Репутация: 0 Всего: 2 |
Всем привет.
МОжет кто сталкивался с сабжем? Ситуация в следующем: В главном потоке создаю окно TLogWindow. Запускаю отдельный поток, который добавляет строки в созданное окно:
При обращении к окну TLogWindow начинаются самые разнообразные глюки - Memo становится невидимым, валятся эксепшны типа "bad typecast", приложение виснет совсем (тока Ctrl-F2 помогает). Причем глюки каждый раз разные и в разной последовательности. Делo именно в этой строке:
Если ее закоментарить - все работает нормально. Экно TLogWindow создавал по разному: TLogWindow.Create(MainWin) и так TLogWindow.Create(nil) не помогает. Пыталя создавать окно даже так:
Исходники не привожу т.к. там ничего нет. Единственный код который я писал - см. выше. Что я неправильно делаю ? МОжет к окну можно обращаться тока из главного потока ? Как тогда мне логировать параллельный поток ? Заранее спасибо. |
||||||
|
|||||||
| Romikgy |
|
|||
![]() Любитель-программер ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7326 Регистрация: 11.5.2005 Где: Porto Franco Odes sa Репутация: 26 Всего: 146 |
А окно создать в другом потоке пробовал?
-------------------- Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. |
|||
|
||||
| Rennigth |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1708 Регистрация: 21.6.2004 Где: Moscow Репутация: 49 Всего: 76 |
Gershkovich, Нельзя в принцыпе юзать VCL не из MainThread в паралельных потоках а тем более принадлежашее окно MainTread-у, тем более таким "варварским" способом... без синхронизации и тд. -------------------- (* Honesta mors turpi vita potior *) |
|||
|
||||
| Gershkovich |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 243 Регистрация: 8.2.2006 Репутация: 0 Всего: 2 |
Пробовал. Не помогает.
Добавлено @ 11:22 Rennigth, а што делать? Как отобразить лог? Придется наверно искать обходные пути ... |
|||
|
||||
| Rennigth |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1708 Регистрация: 21.6.2004 Где: Moscow Репутация: 49 Всего: 76 |
Gershkovich,
самое простое что могу предложить это треду передавать handle твоего TLogWindow и из него слать ему мессаджи которые будешь уже обрабатывать уже в контексте главного треда. -------------------- (* Honesta mors turpi vita potior *) |
|||
|
||||
| Snowy |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 11363 Регистрация: 13.10.2004 Где: Питер Репутация: 192 Всего: 484 |
А зачем ты вызываешь метод мемы из другого треда?
Это нужно делать в методе синхронизации. |
|||
|
||||
| Gershkovich |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 243 Регистрация: 8.2.2006 Репутация: 0 Всего: 2 |
Snowy, Боюсь что не понимаю.
Это такие методы которые помечены как synchronized ? Насколькоя помню, они выполняются в VCL потоке. Т.е. если я все правильно понимаю, то в классе потока я объявлю метод который synchronized и он без проблем обращается к Memo ? Я ничего не перепутал ? |
|||
|
||||
| Демо |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1278 Регистрация: 3.11.2005 Репутация: 30 Всего: 50 |
-------------------- |
|||
|
||||
| Gershkovich |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 243 Регистрация: 8.2.2006 Репутация: 0 Всего: 2 |
Спасибо.
Жаль что сегодня не получится проверить. |
|||
|
||||
| Демо |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1278 Регистрация: 3.11.2005 Репутация: 30 Всего: 50 |
-------------------- |
|||
|
||||
![]()
|
| Правила форума "Delphi: Общие вопросы" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |