卸载DLL时,我偶然发现了Windows线程机制的意外行为.有一个工作线程对象的包,我试图在卸载DLL时(通过DllMain DLL_PROCESS_DETACH)优雅地完成它们.代码非常简单(我发送一个事件来完成线程的等待循环):
WaitForSingleObject( ThrHandle, INFINITE );
CloseHandle( ThrHandle );
Run Code Online (Sandbox Code Playgroud)
然而WaitForSingleObject挂起了整个事情.如果我在卸载DLL之前执行它,它工作正常.如何解决这种行为?