在B/S系统中引入定时器的功能

王朝asp·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

过去的一些使用ASP技术开发的B/S系统中,需要系统定时执行一些方法时一直都找不到好的解决方案(如果有,那一定是我浅薄了,我们讨论讨论。)。现在在ASP。NET中可以使用自定义实现IHttpModule接口的类来加载一个定时器。

public class OilIHttpModule : IHttpModule

{

public static Timer analyseTimer;//分析数据的定时器

static int intLastTrialInfo_id;//最后分析的ID

static long intAnalyseInterval= 10000;//间隔的时间

public OilIHttpModule()

{ }

public String ModuleName

{

get { return "OilModule"; }

}

///初始化模型

public void Init(HttpApplication application)

{

application.BeginRequest += (new EventHandler(this.Application_BeginRequest));//增加处理请求时触发的事件

if(intLastTrialInfo_id==0)

{ //获取最后分析的

trialInfo_id intLastTrialInfo_id = globalMethod.getLastAnalyseTrialInfo_id();

}

//判断Timer是否存在,如果没有则实例化

if(analyseTimer==null)

analyseTimer = new Timer(new TimerCallback(analyseData),null,intAnalyseInterval,intAnalyseInterval);

}

private void Application_BeginRequest(Object source, EventArgs e)

{

//null

// HttpApplication application = (HttpApplication)source;

// application.Response.Write(intLastTrialInfo_id.ToString());

}

///要定时执行的程序片段

private void analyseData(object obj)

{

///很重要,可以防止定时器被重新生成

analyseTimer.Change( System.Threading.Timeout.Infinite, intAnalyseInterval );

// StatsInterval

int intTrialInfo_idAfterUpdate;

intTrialInfo_idAfterUpdate = globalMethod.AnalyseTrialFromTrialInfo_id(intLastTrialInfo_id);

if(intTrialInfo_idAfterUpdate > intLastTrialInfo_id)

{

intLastTrialInfo_id = intTrialInfo_idAfterUpdate;

}

}

public void Dispose()

{

analyseTimer = null;

}

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航