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
;
}
}

浙公网安备 33010602011771号