明輝手游網(wǎng)中心:是一個免費提供流行視頻軟件教程、在線學(xué)習(xí)分享的學(xué)習(xí)平臺!

在B/S系統(tǒng)中引入定時器的技巧

[摘要]過去的一些使用ASP技術(shù)開發(fā)的B/S系統(tǒng)中,需要系統(tǒng)定時執(zhí)行一些方法時一直都找不到好的解決方案(如果有,那一定是我淺薄了,我們討論討論)。現(xiàn)在在ASP。NET中可以使用自定義實現(xiàn)IHttpModule接口的類來加載一個定時器。public class OilIHttpModule : IHttpM...
過去的一些使用ASP技術(shù)開發(fā)的B/S系統(tǒng)中,需要系統(tǒng)定時執(zhí)行一些方法時一直都
找不到好的解決方案(如果有,那一定是我淺薄了,我們討論討論)。
現(xiàn)在在ASP。NET中可以使用自定義實現(xiàn)IHttpModule接口的類來加載一個定時器。
public class OilIHttpModule : IHttpModule 
{
 public static Timer analyseTimer;//分析數(shù)據(jù)的定時器
 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));
//增加處理請求時觸發(fā)的事件
  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());
 }
 ///要定時執(zhí)行的程序片段
 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;
}