![]() |
|
Модераторы: Snowy, bartram, MetalFan, bems, Poseidon, Riply |
![]()
|
|
| Illusion Dolphin |
|
||||||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1198 Регистрация: 3.5.2003 Репутация: 4 Всего: 63 |
Delphi 2010, Windows7 (вроде бы и на XP так же).
В настройках языка необходимо иметь более 1 языка (рус, англ к примеру). В дополнительныз настройках переключения языка настраиваем: - Язык1 переключается через ctrl+shift+1 - Язык2 переключается через ctrl+shift+2 ... В приложении поток TT:
Само приложение:
Запускаем приложение, фокус на единственную Edit на форме и МЕНЯЕМ язык с помошью вышеуказанной комбинацией (IME). Приложение зависает :( Кто может установить причину и как избавиться? Если использовать только одну форму без других оконных обработчкиков то это исправляется так: (AevMainMessage - ApplicationEvents.OnMessage, FSetLanguageMessage - зарегистрированное сообщение)
Решение не подходит из-за того что в таком случае ошибка возникает и диалогах открытия или сохранения файла т.к. у них другая оконная процедура. Тестовое приложение в аттаче. Заранее спасибо! -------------------- В мире всего две бесконечности: вселенная и человеческая глупость... На счёт вселенной я не уверен. Шифрование и организация фотографий - Photo Database 4.5 |
||||||
|
|||||||
| CodeMonkey |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1839 Регистрация: 24.6.2008 Где: Россия, Тверь Репутация: 16 Всего: 89 |
-------------------- Опытный программист на C++ легко решает любые не существующие в Паскале проблемы. |
|||
|
||||
| Illusion Dolphin |
|
||||||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1198 Регистрация: 3.5.2003 Репутация: 4 Всего: 63 |
Посмотрел. Там ничего касающего вопроса нету. В момент переключения языка (после того как программа не обработала WM_INPUTLANGCHANGEREQUEST) главная нитка потока "Blocked on SendMessage call to a window owned by Thread XXXX", где XXXX поток TT. Для эксперемента я увеличивал Sleep(100000) и пото в момент зависания был в Sleep и даже не нелал никаких синхронизаций (это оказалось избыточной информацией): Главный поток:
Поток:
Ещё идеи будут? -------------------- В мире всего две бесконечности: вселенная и человеческая глупость... На счёт вселенной я не уверен. Шифрование и организация фотографий - Photo Database 4.5 |
||||||
|
|||||||
| CodeMonkey |
|
||||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1839 Регистрация: 24.6.2008 Где: Россия, Тверь Репутация: 16 Всего: 89 |
Лолшто? Что и говорить, "Как узнать почему зависла программа" не имеет никакого отношения к вопросу "Почему приложение зависает при переключении языков", ага. Ладно, посмеялись, ближе к делу
Вот она, ваша причина зависания программы: банальный deadlock. Главный поток ждёт отмашки от TT, а он её не делает, ибо... вообще никогда не делает. Ссылка на поднятие уровня знаний: http://www.transl-gunsmoker.ru/2010/05/blog-post.html Вот она как раз не совсем по теме, но показывает направление поиска. -------------------- Опытный программист на C++ легко решает любые не существующие в Паскале проблемы. |
||||
|
|||||
| Illusion Dolphin |
|
||||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1198 Регистрация: 3.5.2003 Репутация: 4 Всего: 63 |
Спасибо, теперь причина зависания понятна. И раз мы отдалились от "темы", то тогда совсем не по теме - решение проблемы (а вдруг кому пригодится):
Это применять для каждого треда который надо "разгрузить" от лишних сообщений. Ещё раз спасибо, было интересно что является первопричиной. -------------------- В мире всего две бесконечности: вселенная и человеческая глупость... На счёт вселенной я не уверен. Шифрование и организация фотографий - Photo Database 4.5 |
||||
|
|||||
![]()
|
| Правила форума "Delphi: WinAPI и системное программирование" | |
|
|
Запрещено: 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, bartram, MetalFan, bems, Poseidon, Rrader, Riply. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: WinAPI и системное программирование | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |