WaitForSingleObject для объекта потока не работает при выгрузке DLL
Я наткнулся на неожиданное поведение механизма потоков Windows, когда DLL выгружается. У меня есть пакет объектов рабочих потоков, и я стараюсь завершить их, когда DLL выгружается (через DllMain DLL_PROCESS_DETACH). Код очень прост (я отправляю событие, чтобы завершить цикл ожидания потока):
WaitForSingleObject( ThrHandle, INFINITE );
CloseHandle( ThrHandle );
Все же WaitForSingleObject вешает все это. Это работает нормально, если я выполню это до того, как DLL будет выгружена. Как это поведение можно исправить?