WaitForSingleObject para o objeto de thread não funciona no descarregamento de DLL
Eu me deparei com um comportamento inesperado do mecanismo de encadeamento do Windows quando o DLL é descarregado. Tenho um pacote de objetos de thread de trabalho e estou tentando finalizá-los graciosamente quando o DLL é descarregado (via DllMain DLL_PROCESS_DETACH). O código é muito simples (eu envio um evento para concluir o loop de espera do thread):
WaitForSingleObject( ThrHandle, INFINITE );
CloseHandle( ThrHandle );
No entanto, o WaitForSingleObject trava a coisa toda. Funciona bem se eu executá-lo antes que a DLL seja descarregada. Como esse comportamento pode ser corrigido?