На данный момент рассматриваю только вариант
Thread.Sleep
Thread.Sleep блокирует текущий поток, что может быть неэффективным и привести к проблемам, если поток должен выполнять другие задачи.
Подскажите пожалуйста как запускать программу каждые 15 мин. в цикле?
Цикл обязательно? Может Cron? Либо PeriodicTimer с методом WaitForNextTickAsync, который ожидает следующий тик таймера и возвращает true, если тик произошел, и false, если таймер был отменен.