当前位置: 首页 > 图文教程 > 网络编程 > ASP > 在B/S系统中引入定时器的功能

ASP
在Vista IIS 7 中用 vs2005 调试 Web 项目的注意事项
ASP保存远程图片到本地 同时取得第一张图片并创建缩略图的代码
ASP运行在IIS6 500错误解决办法
ASP 精华源码收集(五年总结)
ASP分页类(支持多风格变换)
动网论坛验证码改进 加法验证码(ASPJpeg版)
asp 存储过程分页代码
asp select下拉菜单选择图标并实时显示
aspjpeg组件通用加水印函数代码
aspjpeg 添加水印教程及生成缩略图教程
ASP 根据用户权限判断显示的列标题
asp 批量删除选中的多条记录
asp 隐藏并修改文件的最后修改时间
Discuz!NT 论坛整合ASP程序论坛教程
ajax+asp无限级分类树型结构(带数据库)
asp 由动态网页转变为静态网页的实现代码
通过表单的做为二进制文件上传request.totalbytes提取出上传的二级制数据
ASP 使用三层架构 asp中使用类
ASP GetRef 函数指针试探
ASP 三层架构 Error处理类

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


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-11-03   浏览: 41 ::
收藏到网摘: n/a

过去的一些使用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;
}