我正在关注如何创建将在我的Web服务器上发送自动电子邮件的Windows服务的教程。但是,我已经学习了该教程,但示例代码每60分钟执行一次服务,而我希望每天早上9点每24小时执行一次服务。C#定时器间隔每24小时
下面是示例代码
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();
}
}
}
线scheduleTimer.Interval = 1 * 5 * 60 * 1000;
似乎是它设置的时间间隔60分钟的代码,但是,我不确定我会需要,以修订本,以使其运行每上午9点24小时?
任何意见,将不胜感激。
谢谢。
如果你关心挂钟时间,计时器是错误的工具为了工作。你想要一个调度程序。而且,如果您的服务的唯一目的是要等到预定的时间,然后运行有用的代码,则最好创建一个计划任务,并且不要让代码(无意义地)在其余时间运行。 –
@Damien_The_Unbeliever谢谢,有用的评论。 – tgriffiths