助けてください(;_;)
DLLがロードされたときスレッドを起動し、アンロードされたとき停止するようにしたいため、
以下のようなコードを書いたのですが、
WaitForSingleObjectのところで永久に待ち状態になってしまいます。

何がいけないのでしょうか。

  BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved) {
    if (fdwReason == DLL_PROCESS_ATTACH) {
      DisableThreadLibraryCalls(hinstDLL);
      run = true;
      hThread = CreateThread(0, 0, Thread, 0, 0, 0);
    }
    else if (fdwReason == DLL_PROCESS_DETACH) {
      run = false;
      WaitForSingleObject(hThread, INFINITE); // ← ここでロックしてしまう。
      CloseHandle(hThread);
    }
    return TRUE;
  }

  DWORD Thread() {
    for ( ; ; ) {
      if (!run) {
        return ERROR_SUCCESS;
      }
      Sleep(1000);
    }
    return ERROR_SUCCESS;
  }