Windows non c'entra ... è l'architettura del tuo programma che è anomala.
Se gestisci l'avvio e la sospensione di due thread uno con l'altro in quel modo, stai creando tutte le condizioni classiche per un deadlock. come ti ha detto linoma.
Devi ripensare l'algoritmo con cui deve funzionare il tuo programma.