Windows服务逻辑

时间:2011-05-04 05:58:13

标签: c# asp.net sql-server-2005 windows-services

我需要在报告内容后向用户发送邮件。邮件应在事件报告时间后发送30分钟,然后在事件报告时间后发送105分钟,然后在事件报告时间后发送225分钟。

我正在使用窗口服务和C#,但我只需要一个条件来执行代码。

这是我的代码。

protected override void OnStart(string[] args)
{
  timer1 = new Timer(1800000);
  timer1.Enabled = true;
  timer1.Elapsed += new ElapsedEventHandler(Timer1_Event);
}


public void Timer1_Event(object source, ElapsedEventArgs e)
{
  if(datetime.now==incidentreportedtime+30mim)
  {
    //Send mail to user
  }
}

我的问题是事件可能随时发生,并且该时间可能不会是服务执行代码的时间。

例如,事件提升时间是下午12:45,邮件将在下午1点15分发送。服务可能已经在下午12点50分开始,并且再次从下午1点20分开始,这不等于下午1点15分。在下午1点20分的同一时间内可能发生的事件很少,但并非所有事件都可以被视为发送邮件。

帮助我。

1 个答案:

答案 0 :(得分:1)

public void Timer1_Event(object source, ElapsedEventArgs e)
{
  if(DateTime.Now.Substract(incidentreportedtime).TotalMinutes == 30)
  {
    //Send mail to user
  }
}

并确保计时器每分钟运行一次..

发送邮件谷歌有点像.net发送邮件我的第一个点击:http://weblogs.asp.net/scottgu/archive/2005/12/10/432854.aspx