【问题标题】:Windows service logic [closed]Windows 服务逻辑 [关闭]
【发布时间】:2011-05-04 05:58:12
【问题描述】:

一旦报告了事件,我需要向用户发送邮件。邮件应在事件报告时间后 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 相同时间的事件可能很少,但并非所有事件都可以考虑发送邮件。

帮帮我。

【问题讨论】:

  • 您的问题是什么?看起来像是请求某人为您编写 Windows 服务。
  • 我没有得到你所问的问题。你应该问我关于我在那里发布的问题。请帮助我完成这项任务的逻辑。我不需要代码。
  • 我想提交一个事件。
  • Chaitanya...你特意要求给你提供逻辑和代码......你的要求似乎很明确......所以这不是一个问题......
  • @chaitanya “我的问题是事件可能随时引发,并且该时间可能与服务执行代码的时间不同。” - 不,这不是一个真正的问题。

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


【解决方案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

【讨论】:

  • DateTime.Now.Substract(incidentreportedtime).TotalMinutes 更清楚一点恕我直言。否则+1。只是我在收到可怕的“已发布新答案,请按此处重新加载”时输入的答案
  • 谢谢,但它被限制(在我的情况下,不是以编程方式)每分钟运行服务。那么有没有可能做到这一点而不是每分钟运行一次服务。
  • 如果您在每次事件的最后一次发送邮件时登录,您可以计算上次是多长时间...
  • 谢谢。我觉得你更了解我的问题。
猜你喜欢
  • 2012-08-26
  • 1970-01-01
  • 2010-11-30
  • 1970-01-01
  • 1970-01-01
  • 2010-09-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多