yo uso esto y parece funcionar bien
.lo ise cuando se me tildava la ventana al poner un socket a la escucha :S.
HANDLE hThread;
int g_time;
unsigned long __stdcall task(void* nulo)
{
Sleep(g_time);
// funcion
CloseHandle(hThread);
}
int set_task(int tiempo)
{
g_time = tiempo;
DWORD dwThreadId;
hThread = CreateThread(NULL, 0, task, 0, 0, &dwThreadId);
}