如何使用 Interval 管理定时器

how to manage Timer with Interval

我需要在每个月的第一天早上 6 点发送报告。请帮助解决window服务时间间隔的逻辑,请建议

private System.Timers.Timer svcTimerForSendEmailSrvc = null;

protected override void OnStart(string[] args)
    {
            svcTimerForSendEmailSrvc = new System.Timers.Timer();
            svcTimerForSendEmailSrvc.Enabled = true;
            svcTimerForSendEmailSrvc.Interval = //here not getting time every month 1st date 6am mail should send
            svcTimerForSendEmailSrvc.Elapsed += new System.Timers.ElapsedEventHandler(svcTimerForSendEmailSrvc_Elapsed);
            svcTimerForSendEmailSrvc.Start();
    }

void svcTimerForSendEmailSrvc_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
    {
        SendReportEverymonth1day();
    }

示例我需要每月 1 点 6 点发送电子邮件。

喜欢1 jan 2022 next mail 1 feb 2022 next....1 dec 2022

Third-party 解决方案,例如 FluentScheduler or Quartz.NET 可用于在特定时间间隔将代码安排到 运行,例如:

Schedule<MyComplexJob>().ToRunNow().AndEvery(1).Months().OnTheFirst(DayOfWeek.Monday).At(3, 0);

计时器不能。

@Fildor 建议的另一种选择是使用 Windows 中的任务计划程序启动一个程序,该程序 运行 按照给定的计划执行您的代码,例如每月一次。