You have misunderstood the code.

The first Thread.Sleep() is simply to simulate some amount of work being done while the timer is executing.

The second Thread.Sleep (in ComputeBoundOp) is called on the timer's thread, not the main thread, because Thread.Sleep() always acts on the thread that called it.

Also, no; spawning a single thread would not be "really [in]efficient".