I would like to have an event triggered in my app which runs continuously during the day at a certain time, say at 4:00pm. I thought about running the timer every second and
.NET has lots of timer classes, but they all take time spans relative to the current time. With a relative time, there are lots of things to consider before you start your timer and to monitor for while your timer is running.
The operating system is in a great place to handle this complexity. Application code running on .NET is not.
For Windows, the NuGet package AbsoluteTimer wraps an operating system timer that expires at an absolute time.