在业务复杂的应用程序中,有时候会要求一个或者多个任务在一定的时间或者一定的时间间隔内计划进行,比如定时备份或同步数据库,定时发送电子邮件等,我们称之为计划任务。实现计划任务的方法也有很多,可以采用SQLAgent执行存储过程来实现,也可以采用Windows任务调度程序来实现,也可以使用Windows服务来完成我们的计划任务,这些方法都是很好的解决方案。但是,对于Web应用程序来说,这些方法实现起来并不是很简单的,主机服务提供商或者不能直接提供这样的服务,或者需要你支付许多额外的费用。 本文就介绍一个直接在Web应用程序中使用的简单的方法,这个方法不需要任何额外的配置即可轻松实现。
由于ASP.NET站点是作为Web应用程序运行的,它并不受线程的限制,因此我们可以非常方便地在Application_Start和Application_End事件中建立和销毁一个计划任务。下面就简单介绍一下在Web站点实现计划任务的方法。我们的例子是定时往文件里添加信息,作为例子,这里把当前的时间定时地写入文件中。
由于ASP.NET站点是作为Web应用程序运行的,它并不受线程的限制,因此我们可以非常方便地在Application_Start和Application_End事件中建立和销毁一个计划任务。下面就简单介绍一下在Web站点实现计划任务的方法。我们的例子是定时往文件里添加信息,作为例子,这里把当前的时间定时地写入文件中。
代码
System.Timers.Timer aTimer = new System.Timers.Timer();//定义定时器
void Application_Start(object sender, EventArgs e)
{
aTimer.Elapsed += new System.Timers.ElapsedEventHandler(TimedEvent);
aTimer.Interval = 3000;//设置间隔时间
aTimer.Start();
}
private void TimedEvent(object source, System.Timers.ElapsedEventArgs e)
{
///在这里添加需要执行的任务
SampleJob sampleJob = new SampleJob();
sampleJob.Execute();
}
void Application_End(object sender, EventArgs e)
{
aTimer.Stop();
}
void Application_Start(object sender, EventArgs e)
{
aTimer.Elapsed += new System.Timers.ElapsedEventHandler(TimedEvent);
aTimer.Interval = 3000;//设置间隔时间
aTimer.Start();
}
private void TimedEvent(object source, System.Timers.ElapsedEventArgs e)
{
///在这里添加需要执行的任务
SampleJob sampleJob = new SampleJob();
sampleJob.Execute();
}
void Application_End(object sender, EventArgs e)
{
aTimer.Stop();
}