Используйте
1. System.Timers.Timer
2. System.Windows.Forms.Timer
3. System.Threading.Timer
Лучше не использовать Thread.Sleep, так как это полностью заблокирует нить и предотвратит её от обработки других сообщений.
Если предположить, что у вас однопоточное приложение (а они большинство), ваше приложение прекратит отвечать на все запросы, а не просто остановится на время, как можно подумать.
Для контроля (сколько времени реально выполнялось) можно использовать System.Diagnostics.Stopwatct.