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

 

转载于:https://www.cnblogs.com/niumeng/archive/2010/12/16/1908057.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值