asp.net 定时间点执行任务的简易解决办法

  比如每天凌晨七点的时候email发送一次报表。

  这里首先想到的就是利用 Global.asax 文件来实现, 以下Global文件的内容。

  

复制代码 代码如下:

  <%@ Application Language="C#" %>

  <%@ Import Namespace="System.Threading" %>

  <script runat="server">

  //这里使用静态保持对这处Timer实例的引用,以免GC

  private static System.Threading.Timer timer = null;

  protected void Application_Start(object sender, EventArgs e) {

  //计算现在到目标时间要过的时间段。

  DateTime LuckTime = DateTime.Now.Date.Add(new TimeSpan(7, 0, 0));

  TimeSpan span = LuckTime - DateTime.Now;

  if (span < TimeSpan.Zero) {

  span = LuckTime.AddDays(1d) - DateTime.Now;

  }

  //按需传递的状态或者对象。

  object state = new object();

  //定义计时器

  timer = new System.Threading.Timer(

  new TimerCallback(CertainTask), state,

  span, TimeSpan.FromTicks(TimeSpan.TicksPerDay));

  }

  protected void Application_End(object sender, EventArgs e) {

  //结束时记得释放

  if (timer != null) { timer.Dispose(); }

  }

  //这里是指定时间执行的代码,必须是静态的。

  private static void CertainTask(object state) {

  //这里写你的任务逻辑

  }

  </script>