У меня проблемы с выполнением операции поиска в фоновом режиме и отображением результатов для пользователя на переднем плане внутри поля списка.
Программа использует SendMessage
для отправки результатов запроса обратно вграфический интерфейс
Когда программа закрыта, графический интерфейс пользователя помечает глобальную (изменчивую) переменную как «завершенную» и использует MsgWaitForMultipleObjects
для ожидания на дескрипторе потока, чтобы присоединиться к потоку.
КогдаЯ ломаю программу, вижу тупик: графический интерфейс ожидает завершения фонового потока, тогда как фоновый поток ждет в SendMessage
.
Этот тупик все еще возникает, когда я использую 100-ms таймаут для MsgWaitForMultipleObjects
и вызов его внутри цикла , с QS_ALLINPUT
.Я не могу понять, почему.
Является ли этот дизайн даже правильным?Есть ли лучший способ дождаться завершения потока?
Если нет, то в чем проблема?