Как добавить обработчик события для завершения потока в MFC? - PullRequest
2 голосов
/ 10 января 2011

В настоящее время я использую WaitForSingleObject для ожидания завершения потока подзадачи.К сожалению, это приводит к блокировке моего графического интерфейса.Вместо этого я хотел бы установить обработчик (в потоке GUI), который будет вызываться после завершения потока подзадачи.Есть ли другая функция для этого?

Ответы [ 2 ]

3 голосов
/ 10 января 2011

То, что вы можете сделать, это дать последнему, что ваша ветка отправляет в ваше окно собственное сообщение. Затем обработайте это как обычное сообщение, используя карту сообщений MFC. Если вы не можете изменить код потока, вы можете создать новый поток, который ждет вашего потока и затем отправляет сообщение.

Как вы уже заметили, блокировать поток графического интерфейса не очень хорошая идея ...

Редактировать: отправка сообщения осуществляется с использованием функции PostMessage, как указано в комментариях Ганса.

1 голос
/ 10 января 2011

Может также взглянуть на MsgWaitForMultipleObjects (или MsgWaitForMultipleObjectsEx). Это позволяет потоку ожидать дескрипторы событий и сообщения окон обслуживания (проверьте возвращаемое значение, чтобы увидеть, что вызывает возврат вызова). Примеры использования должны быть доступны через поиск товаров.

http://msdn.microsoft.com/en-us/library/ms684245(VS.85).aspx

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...