![]() |
|
![]() ![]() ![]() |
|
xTr1m |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 692 Регистрация: 9.2.2005 Где: Москва Репутация: нет Всего: 1 |
Доброго времени суток. Есть код (запускается два потока и ожидается их выполнение) :
Этот код работает. Но если раскомментировать строки с AfxMessageBox, то все зависает. То есть, когда доходит до сообщения в первом потоке (ставлю там breakpoint), дальше жму F10 и все наглухо повисает. В чем проблема? AfxMessageBox какой то потокобезопасный и чего то ждет? Спасибо. |
|||
|
||||
Albor |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 589 Регистрация: 28.2.2009 Репутация: 7 Всего: 9 |
Осмелюсь предположить, что MessageBox появляется, но невидим, а, поскольку это модальное окно, создаётся эффект зависания.
|
|||
|
||||
xTr1m |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 692 Регистрация: 9.2.2005 Где: Москва Репутация: нет Всего: 1 |
Штука получается такая, что если убрать WaitForMultipleObjects, то сообщения появляются.
|
|||
|
||||
Albor |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 589 Регистрация: 28.2.2009 Репутация: 7 Всего: 9 |
Эта строчка ожидает сигналы от обоих потоков бесконечно, а чтобы функция потока завершилась, нужно завершить работу MessageBox-a.
Это сообщение отредактировал(а) Albor - 22.3.2011, 10:38 |
|||
|
||||
xTr1m |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 692 Регистрация: 9.2.2005 Где: Москва Репутация: нет Всего: 1 |
Ага, ну примерно стало ясно. Неясно другое - почему messagebox не отображается =)
|
|||
|
||||
Albor |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 589 Регистрация: 28.2.2009 Репутация: 7 Всего: 9 |
Вот из MSDN
То есть нужно использовать MsgWaitForMultipleObjects или MsgWaitForMultipleObjectsEx, так как функция потока создаёт окно. |
|||
|
||||
xTr1m |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 692 Регистрация: 9.2.2005 Где: Москва Репутация: нет Всего: 1 |
Вау, огромное спасибо. Даже не знаю как вы это нашли =)
|
|||
|
||||
Albor |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 589 Регистрация: 28.2.2009 Репутация: 7 Всего: 9 |
||||
|
||||
Dem_max |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1780 Регистрация: 12.4.2007 Репутация: 1 Всего: 39 |
нельзя MessageBox вызывать в потоке, их нужно вызывать в основном потоке обработки сообщений путем.
-------------------- Американские программисты долго не могли понять, почему русские при зависании Windоws всё время повторяют "Твой зайка написал" ("Yоur bunnу wrоte") |
|||
|
||||
![]() ![]() ![]() |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Visual C++/MFC/WTL | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |