每24小时C#计时器间隔

tco*_*ode 5 c# windows-services timer

我正在学习如何创建将在我的Web服务器上发送自动电子邮件的Windows服务的教程.我已经有了教程,但是,示例代码每60分钟执行一次服务,相反,我希望每天24小时执行一次服务,比如说每天早上9点.

下面是示例代码

    private Timer scheduleTimer = null;
    private DateTime lastRun;
    private bool flag;

    public StarEmailService()
    {
        InitializeComponent();
        if (!System.Diagnostics.EventLog.SourceExists("EmailSource"))
        {
            System.Diagnostics.EventLog.CreateEventSource("EmailSource", "EmailLog");
        }
        eventLogEmail.Source = "EmailSource";
        eventLogEmail.Log = "EmailLog";

        scheduleTimer = new Timer();
        scheduleTimer.Interval = 1 * 5 * 60 * 1000;
        scheduleTimer.Elapsed += new ElapsedEventHandler(scheduleTimer_Elapsed);

    }

    protected override void OnStart(string[] args)
    {
        flag = true;
        lastRun = DateTime.Now;
        scheduleTimer.Start();
        eventLogEmail.WriteEntry("Started");
    }

    protected void scheduleTimer_Elapsed(object sender, ElapsedEventArgs e)
    {
        if (flag == true)
        {
            ServiceEmailMethod();
            lastRun = DateTime.Now;
            flag = false;
        }
        else if (flag == false)
        {
            if (lastRun.Date < DateTime.Now.Date)
            {
                ServiceEmailMethod();
            }
        }
    }
Run Code Online (Sandbox Code Playgroud)

该行scheduleTimer.Interval = 1 * 5 * 60 * 1000;似乎是将间隔设置为60分钟的代码,但是,我不确定我需要将其修改为什么才能使其在上午9点每24小时运行一次?

任何意见,将不胜感激.

谢谢.

ole*_*sii 10

你有几个选择:

不要依赖其他计时器,因为它们将来(近)不同步.