La differenza sostanziale tra i due metodi e' che la Sleep opera a livello di sistema operativo in relazione alla schedulazione del thread (che viene sospeso) mentre l'altro *non sospende* il thread.
Il vantaggio di sospendere il thread e' quello di ottenere che la CPU non sia impegnata, lo svantaggio e' quello di sospendere per il periodo impostato la gestione dei messaggi provenienti dal sistema (e questo puo' dare l'impressione che il processo sia "bloccato" e non risponda).
Quindi, per periodi brevi la Sleep puo' andare bene ma per periodi piu' lunghi e' meglio non usarlo ...
La soluzione migliore e' usare il ciclo in modo che i messaggi vengano processati introducendo al suo interno uno sleep molto piccolo (tra 20 e 50 millisecondi) in modo che la CPU non sia impegnata molto impegnata.