use ParallelWorkQueue instead of Thread
this provides signalling.  No more `Thread.Sleep(100);`!