У меня есть немодельное диалоговое окно, которое создает поток, и, если нажата кнопка отмены в диалоговом окне, задается переменная bCancel, которую периодически проверяет рассматриваемый поток, а затем немедленно переходит к своему коду очистки. Работает нормально. Я даже могу отправить WM_COMMAND ... ID_CANCEL в диалог из других мест, и он работает так же. Но он не работает, когда я пытаюсь отправить ID_CANCEL в диалоговое окно из обработчика WM_CLOSE главного окна приложения (т. Е. Пользователь пытается закрыть все приложение во время работы этого потока.) Как я могу сказать, что-то просто завершает поток снаружи, прежде чем он сможет выполнить свой код очистки. Это звучит правильно. Что я могу сделать.
(В обработчике ID_CANCEL диалогового окна есть критическая секция, о которой я не упомянул - не уверен, насколько она актуальна. (BCancel устанавливается в этой критической секции, и поток выполняет свой код очистки в той же критической секции.)