protected void Application_Start(object sender, EventArgs e)
{
System.Timers.Timer timer = new System.Timers.Timer();
// 多长时间执行一次,毫秒为单位
timer.Interval = * ;//两分钟一次 *60 * 24; // 一天执行一次
timer.Elapsed += new System.Timers.ElapsedEventHandler(Global_ExecuteTask);
timer.AutoReset = true;
timer.Start();
}

定义一个类,实现IHttpModule接口。

IHttpModule向实现类提供模块初始化和处置事件。 
IHttpModule包含兩個方法:

public void Init(HttpApplication context);
public void Dispose();

Application_Start事件激发后,马上会进入HttpModule的Init方法,可以在这个Init方法中做一些初始化工作还有向一些事件追加额外处理事件方法。

HttpApplication类拥有的事件,和事件顺序

// 摘要:
// 当 ASP.NET 获取与当前请求关联的当前状态(如会话状态)时发生。
public event EventHandler AcquireRequestState;
//
// 摘要:
// 当安全模块已建立用户标识时发生。
public event EventHandler AuthenticateRequest;
//
// 摘要:
// 当安全模块已验证用户授权时发生。
public event EventHandler AuthorizeRequest;
//
// 摘要:
// 在 ASP.NET 响应请求时作为 HTTP 执行管线链中的第一个事件发生。
public event EventHandler BeginRequest;
//
// 摘要:
// 在释放应用程序时发生。
public event EventHandler Disposed;
//
// 摘要:
// 在 ASP.NET 响应请求时作为 HTTP 执行管线链中的最后一个事件发生。
public event EventHandler EndRequest;
//
// 摘要:
// 当引发未处理的异常时发生。
public event EventHandler Error;
//
// 摘要:
// 恰好在 ASP.NET 为当前请求执行任何记录之前发生。
public event EventHandler LogRequest;
//
// 摘要:
// 在选择了用来响应请求的处理程序时发生。
public event EventHandler MapRequestHandler;
//
// 摘要:
// 在已获得与当前请求关联的请求状态(例如会话状态)时发生。
public event EventHandler PostAcquireRequestState;
//
// 摘要:
// 当安全模块已建立用户标识时发生。
public event EventHandler PostAuthenticateRequest;
//
// 摘要:
// 在当前请求的用户已获授权时发生。
public event EventHandler PostAuthorizeRequest;
//
// 摘要:
// 在 ASP.NET 处理完 System.Web.HttpApplication.LogRequest 事件的所有事件处理程序后发生。
public event EventHandler PostLogRequest;
//
// 摘要:
// 在 ASP.NET 已将当前请求映射到相应的事件处理程序时发生。
public event EventHandler PostMapRequestHandler;
//
// 摘要:
// 在 ASP.NET 已完成所有请求事件处理程序的执行并且请求状态数据已存储时发生。
public event EventHandler PostReleaseRequestState;
//
// 摘要:
// 在 ASP.NET 事件处理程序(例如,某页或某个 XML Web service)执行完毕时发生。
public event EventHandler PostRequestHandlerExecute;
//
// 摘要:
// 在 ASP.NET 跳过当前事件处理程序的执行并允许缓存模块满足来自缓存的请求时发生。
public event EventHandler PostResolveRequestCache;
//
// 摘要:
// 在 ASP.NET 完成缓存模块的更新并存储了用于从缓存中为后续请求提供服务的响应后,发生此事件。
public event EventHandler PostUpdateRequestCache;
//
// 摘要:
// 恰好在 ASP.NET 开始执行事件处理程序(例如,某页或某个 XML Web services)前发生。
public event EventHandler PreRequestHandlerExecute;
//
// 摘要:
// 恰好在 ASP.NET 向客户端发送内容之前发生。
public event EventHandler PreSendRequestContent;
//
// 摘要:
// 恰好在 ASP.NET 向客户端发送 HTTP 标头之前发生。
public event EventHandler PreSendRequestHeaders;
//
// 摘要:
// 在 ASP.NET 执行完所有请求事件处理程序后发生。该事件将使状态模块保存当前状态数据。
public event EventHandler ReleaseRequestState;
//
// 摘要:
// 在 ASP.NET 完成授权事件以使缓存模块从缓存中为请求提供服务后发生,从而绕过事件处理程序(例如某个页或 XML Web services)的执行。
public event EventHandler ResolveRequestCache;
//
// 摘要:
// 当 ASP.NET 执行完事件处理程序以使缓存模块存储将用于从缓存为后续请求提供服务的响应时发生。
public event EventHandler UpdateRequestCache;

在Init方法中做很多初始化工作,同时可以给事件绑定自定义处理方法干些,自己想干的事情。如:

启用Gzip压缩、错误处理、登录验证、权限检查等。

/// <summary>
/// 初始化
/// </summary>
/// <param name="app"></param>
public void Init(HttpApplication app)
{
app.BeginRequest += new EventHandler(app_HttpGZip);
app.Error += new EventHandler(app_Error);
app.AuthenticateRequest += new EventHandler(app_AuthMethod);
app.AcquireRequestState += new EventHandler(app_Auth);
AppStartTime = DateTime.Now;
sys_Module_Cache.Init_sys_Module_Cache();
}

Application_Start事件中用Timer做一个循环任务的更多相关文章

  1. java中用swing做一个windows计算器

    目录 主函数 普通计数器 科学计算器 注意: @(java中用swing做一个windows计算器) 前言: 来看这篇教程估计都是java课程设计吧,现在已经没有公司很少使用swing组件了,java ...

  2. 假设做一个循环滚动UIScrollView

    先上效果图: 首先初始化: - (void)viewDidLoad { //加入最后一张图 用于循环 int length = 4; NSMutableArray *tempArray = [NSMu ...

  3. 如何做一个导航栏————浮动跟伪类(hover)事件的应用

    我们先说一下伪类选择器的写法: 写法:选择器名称:伪类状态{}4 常见伪类状态: 未访问:link 鼠标移上去:hover 激活选定:active 已访问:visited 获得焦点的时候触发:focu ...

  4. Labview一个循环中放两个事件结构会导致前面板锁定的问题

    建议在同一个循环中,只放置一个事件结构.此时,当一个事件发生时,事件结构将对事件进行处理,然后继续循环,事件结构再等待下一个事件发生. 如在同一个循环中放置两个事件结构,只有在两个事件结构都处理了事件 ...

  5. VUE2.0+VUE-Router做一个图片上传预览的组件

    之前发了一篇关于自己看待前端组件化的文章,但是由于学习和实践的业务逻辑差异,所以自己练习的一些demo逻辑比较简单,打算用vue重构现在公司做的项目,所以在一些小的功能页面上使用vue来做的,现在写的 ...

  6. [DataTable]控件排序事件中用DataView及DataTable排序

    控件排序事件中用DataView及DataTable排序 文章分类:.net编程 在做ASP.NET页面开发时,经常要用到dataset(或者DataTable),绑定到DataGrid或GridVi ...

  7. 关于longPressGesture做一个长按连加的效果(原创)

    关于longPressGesture做一个长按连加的效果 解释一下什么意思呢?就是一个button长按之后其数字的一直累加.朋友们可能看起来很简单,无非就是加一个长按手势(longPressGestu ...

  8. 关于Application_End 与 Application_Start事件触发情况的测试(待续)

    测试项目搭建 定义一个简单的Mvc项目,有如下文件: (1) public class Startup { public void Configuration(IAppBuilder app) { a ...

  9. [转]jsPlumb插件做一个模仿viso的可拖拉流程图

    原贴:https://www.cnblogs.com/sggx/p/3836432.html 前言 这是我第一次写博客,心情还是有点小小的激动!这次主要分享的是用jsPlumb,做一个可以给用户自定义 ...

随机推荐

  1. CUDA数组分配

    原问链接 概述:数组分配可以通过cudaMallocArray()和cudaMalloc3DArray() 1.cudaMallocArray() cudaError_t cudaMallocArra ...

  2. iOS之旅--隐藏(去除)导航栏底部横线

    iOS之旅--隐藏(去除)导航栏底部横线 iOS开发大部分情况下会使用到导航栏,由于我司的app导航栏需要与下面紧挨着的窗口颜色一致,导航栏底部的横线就会影响这个美观,LZ使用了以下方法.觉得不错,分 ...

  3. 用IDEA搭建基于maven的springboot项目

     第一步:新建一个Project 第二步:选择Spring Initializr和SDK 然后next  第三步:修改Group和Artifact 第四步:按自己的需求选,这里我选的是Web,然后ne ...

  4. udp回显客户端发送的数据

    这里让客户端给服务端发送的数据被服务端自动发回来 客户端: import socket client_socket = socket.socket(socket.AF_INET, socket.SOC ...

  5. MARK 一条关于Linux 运维方面个人向收藏网址

    吴钧泽博客 https://wujunze.com/archives.html Linux运维笔记 https://blog.linuxeye.cn/ Linux中文网 http://www.ppze ...

  6. filebeat的安装及配置

    概述:Filebeat是一个日志文件托运工具,在你的服务器上安装客户端后,filebeat会监控日志目录或者指定的日志文件,追踪读取这些文件(追踪文件的变化,不停的读),并且转发这些信息到elasti ...

  7. javascript中string对象方法中的slice、substring、substr的区别联系

    1.slice.substring.snustr均属于String的对象方法,用于截取或提取字符串片段,三者均布破坏原先的字符串,而是以新的字符串返回被提取的部分. <script> va ...

  8. PHP获取异常信息

    try { } catch (\Exception $e) { $extra = [ 'code' => $e->getCode(), 'msg' => $e->getMess ...

  9. 开始体验第一个JAVA程序吧!

    一.准备工作(配置环境) 1.安装JAVA开发工具(JDK) a.下载符合自己电脑系统的Java开发软件:http://www.oracle.com/technetwork/java/javase/d ...

  10. MOS管学习笔记

    最近在做一个小的电路设计项目,其中遇到了MOS管,经过查询资料,多年遗忘的数电.模电渐渐又浮现在我的脑海,在百度文库找到一篇比较不错的文章,把它截图使用出来,如原稿作者看到感觉侵权,请及时联系我,以便 ...