Нет, вы не будете использовать процессор, потому что спящие потоки не запланированы для выполнения, пока не истечет их время ожидания. Используйте Thread.Sleep , чтобы текущий поток спал в течение тайм-аута в миллисекундах. Что-то вроде:
while(!stop) // boolean variable to indicate when to stop the service.
{
Thread.Sleep(30000);
// do work
}
Вам, конечно, нужно будет запустить это в отдельном потоке, иначе вы заблокируете основной поток.