Any solution that depends on System.Timers.Timer
, System.Threading.Timer
, or any of the other timers that currently exist in the .NET Framework will fail in the face of Daylight Saving time changes. If you use any of those timers, you will have to do some polling.
Windows has a Waitable Timer that you can use, but it's not supported by any Framework class. I wrote a wrapper for it some years ago. The article I published is no longer available, but you can download the full source code from http://www.mischel.com/pubs/waitabletimer.zip
That said, if the only thing your program does is run once every day, or if the task it performs can be split off from the rest of the program, you're almost certainly better off with a scheduled task. And although I haven't ever used Quartz.NET, I have no problem recommending it based on the good reviews I've seen from people whose judgement I trust.