Is it ok to use Thread.Sleep and Thread.Interrupt for pausing and resuming Thread like this?
This is pretty bad.

Instead why not use BlockingCollection. Then the loop will be:

try
{
    while(true)
    {
        doSomethingWith(queue.Take());
    }
}
catch(InvalidOperationException e)
{
    // ignore and cleanup
}


And to stop the thread you need to call CompleteAdding() on the queue.