asp.net 耗时操作的一个思路

代码
// 程序的定期任务,每个任务都实现ISchedulerWork

public interface ISchedulerWork
{
void Execute();
}

//考核模块——考核个人通知邮件任务
public class EmaiSendingJob : ISchedulerWork
{
public void Execute()
{
;

}
}

//建立一个配置对象,用来存储要定期执行的任务和执行的时间间隔。
public class SchedulerConfiguration
{
//时间间隔 每天执行一次
private int sleepInterval;

//任务列表
private ArrayList jobs = new ArrayList();


public int SleepInterval { get { return sleepInterval; } }
public ArrayList Jobs { get { return jobs; } }

//调度配置类的构造函数
public SchedulerConfiguration(int newSleepInterval)
{
sleepInterval
= newSleepInterval;
}
}

//调度类,定时执行配置对象的任务
public class Scheduler
{
private SchedulerConfiguration configuration = null;

public Scheduler(SchedulerConfiguration config)
{
configuration
= config;
}

public void Start()
{
while (true)
{
//执行每一个任务
foreach (ISchedulerWork job in configuration.Jobs)
{
Thread myThread
= new Thread(new ThreadStart(job.Execute));
myThread.Start();
Thread.Sleep(configuration.SleepInterval);
}
}
}
}

在程序全局事件中:

 

代码
protected void Application_Start(object sender, EventArgs e)
{
SchedulerConfiguration config
=
new SchedulerConfiguration(1000 * 60 * 60 * 23);

config.Jobs.Add(
new .EmailSendingJob());

Scheduler scheduler
= new Scheduler(config);

schedulerThread
= new System.Threading.Thread(new System.Threading.ThreadStart(scheduler.Start));
schedulerThread.Start();


}

protected void Application_End(object sender, EventArgs e)
{
try
{
//程序退出时进行销毁
if (schedulerThread != null)
{
schedulerThread.Abort();
}
}
catch
{
//operation
;
}
}

 

posted on 2010-12-16 12:29  牛虻  阅读(461)  评论(0)    收藏  举报

导航