Непонятно, почему бы просто не установить интервал таймера на целевую дату / время.Существует ограничение на количество миллисекунд, время может быть до 2 ^ 31 миллисекунд, 27 дней.Вы будете в порядке, пока сможете оставаться в этом диапазоне.
private static void SetTimer(Timer timer, DateTime due) {
var ts = due - DateTime.Now;
timer.Interval = ts.TotalMilliseconds;
timer.AutoReset = false;
timer.Start();
}