I have a windows service that utilizes an infinite loop and thread.sleep. The sleep time for the thread is 10 seconds. 

When the service is initially started AND has work to do (data exist in SQL), it immediately does it's processes. It continues to be responsive and process tasks every 10 seconds **as long as it has work to do**. If no data is present in SQL for an extended period (i.e. 15-20 minutes) then the service starts responding very slowly. It will eventually pick the data up and process it, but it takes more like 10 minutes instead of 10 seconds.

There's no logic in the code telling the service to sleep. Any ideas?