Легенда:
новое сообщение
закрытая нитка
новое сообщение
в закрытой нитке
старое сообщение
|
- Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
- Новичкам также крайне полезно ознакомиться с данным документом.
совет 19.04.05 12:35 Число просмотров: 1869
Автор: _йцукенг_ Статус: Незарегистрированный пользователь
|
> Столкнулся с проблемой связанной с функцией > WaitForMultipleObjects.... При использовании данной функции > в MFC приложении, прога виснет намертво, и мне никак не > отловить завершения потоков... > Причем заметил, что если вызывать её в деструкторе класса > окна, она отрабатывает на ура! Все контролы успевают > помереть до вызова деструктора, а вот если вызывать к > примеру при нажатии кнопки, прога виснет...
Итак, что мы имеем.
1) у тебя есть многопоточное MFC-приложение
2) в обработчике события нажатия на кнопку ты вызываешь WaitForMultipleObjects с бесконечным таймаутом, ожидая завершения работы потоков.
3) прога виснет.
4) если вызывать ф-ю в деструкторе класса окна, все нормально.
вывод - твои потоки каким-то образом взаимодействуют с окном, либо ожидают сообщения от этого окна, либо еще чего-то.
а поскольку при вызове WaitForMultipleObjects обработка оконных сообщений останавливается, потоки не завершаются.
рекомендую для того, чтобы сказать потокам о том, что пора закругляться с работой, использовать Event.
пусть они его проверяют, и если он выставлен, завершаются.
PS. MFC не виноват.
|
|
|