На данный момент я использую WaitForSingleObject
, чтобы дождаться завершения подзадачи. К сожалению, это заставляет мой GUI запираться. Вместо этого я хотел бы задать обработчик (в потоке GUI), который будет вызываться после завершения потока подзаголовка. Есть ли еще одна функция для этого?Как добавить обработчик событий, когда поток заканчивается в MFC?
ответ
Что вы можете сделать, так это позволить последнему, что ваш поток отправляет пользовательское сообщение в ваше окно. Затем обработайте это как обычное сообщение, используя карту сообщений MFC. Если вы не можете изменить код потока, вы можете создать новый поток, который ждет вашего потока, а затем отправит сообщение.
Как вы уже заметили, что это не очень хорошая идея, чтобы запереть GUI нить ...
Edit: Публикация сообщения осуществляется с помощью функции PostMessage, как отметил Ханс в комментариях.
Также можно посмотреть MsgWaitForMultipleObjects (или MsgWaitForMultipleObjectsEx). Они позволяют потоку ждать сообщений о событиях и сообщений служб Windows (проверьте возвращаемое значение, чтобы увидеть, что заставляет вызов возвращаться). Примеры использования должны быть доступны с помощью поиска goodle.
http://msdn.microsoft.com/en-us/library/ms684245(VS.85).aspx
- 1. Невозможно добавить обработчик событий в visual studio 2010 (проект mfc)
- 2. Поток программы не входит в обработчик событий
- 3. Добавить обработчик событий внук
- 4. Добавить обработчик событий в ImageButton
- 5. Как включить или отключить обработчик событий в MFC?
- 6. Добавить аргумент в обработчик событий.
- 7. Как добавить Promise обработчик событий в JavaScript
- 8. Как добавить обработчик событий JS в Prototype?
- 9. Как добавить обработчик событий в VB.NET?
- 10. Как программно добавить обработчик событий в JQGrid?
- 11. Когда jquery.delegate вызывает обработчик событий?
- 12. Как реализовать обработчик событий для MFC CEdit ON_EN_SETFOCUS?
- 13. как добавить обработчик событий программно созданный флажков
- 14. Как добавить обработчик событий на .clone элемент
- 15. Как убить поток MFC?
- 16. Как реализовать обработчик событий WM_LBUTTONCLICK
- 17. Как добавить обработчик событий мыши на MenuItem
- 18. Обработчик событий против делегата
- 19. MFC компонент дефокусировки обработчик события
- 20. Добавить обработчик событий в динамический раскрывающийся список
- 21. Как удалить обработчик событий?
- 22. GWT добавить обработчик событий в элемент dom
- 23. Добавить настраиваемый обработчик событий в компонент AppWidget
- 24. Добавить обработчик событий yii2 в самой модели
- 25. C++ Многопоточность - Когда заканчивается дочерний поток?
- 26. MFC-переключатель группового сообщения обработчик
- 27. Как работает обработчик событий?
- 28. Рабочий поток в MFC
- 29. Возможно ли добавить локальный обработчик событий в удаленный диспетчер событий
- 30. VS 2008 MFC - Удалить обработчик MFC
PostMessage, не отправив сообщение. –
@ Hans Passant: Я согласен с вами в том, что это правильный метод использования. Небрежный выбор слов с моей стороны, и я отредактирую свой ответ, чтобы отразить это. – villintehaspam