Всякий раз, когда вы пишете цикл, который что-то делает, затем ждет относительно длительный период времени (даже одна секунда - долгое время!), Чтобы сделать это снова, вы должны устранить цикл и использоватьтаймерНапример, приведенный выше код может быть переписан:
System.Threading.Timer MyTimer;
public void Start()
{
MyTimer = new Timer((s) =>
{
DoSomeWork();
}, null, 15000, 15000);
}
Таймер будет срабатывать каждые 15 секунд для выполнения работы.Когда пришло время завершать работу программы, просто утилизируйте таймер.
public void Stop()
{
MyTimer.Dispose();
}
Это будет более эффективно, чем использование отдельного потока, который проводит большую часть своего времени в спящем режиме, но все еще потребляет системные ресурсы.