Not really -- without a Thread.Sleep() other processes don't have much of a chance to get CPU time. You can easily test this by putting Thread.Sleep(0) inside the loop then check Task Manager to see what affect it has on the CPU time your program consumes.

Not really -- without a Thread.Sleep() other processes don't have much of a chance to get CPU time. You can easily test this by putting Thread.Sleep(0) inside the loop then check Task Manager to see what affect it has on the CPU time your program consumes.

Depends how you want to marshal your task scheduling. Windows itself is pretty clever and can offer time slices to other processes but this depends on the intensity of his work.

For example, while I write this I have a console application running 4 threads in an infinite loop that do nothing other than set a boolean flag, check it and do nothing with the result, consuming 99% of my processor time.
There is no degradation of system performance as Windows can easily marshal processing time to other processes. When you start doing heavy IO work then Windows starts to get bogged down. But this is not the loop taking up your processing time, but the actual "meat" of the software.

The idea behind the OP's solution is that the time it takes to process a single iteration is far more intensive than the looping itself. If you want to sleep inside your intensive operations to marshal CPU time then that would be okay. But I wouldn't just sleep the loop, because once you reach this stage, Windows can easily marshal time away and place your software on a lower priority. It kinda depends on your requirements I guess. Sleep if you want to make other applications much more responsive (transparent processing), don't sleep if you want to finish processing as quickly as possible.