Application_Start事件中用Timer做一个循环任务
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做一个循环任务的更多相关文章
- java中用swing做一个windows计算器
目录 主函数 普通计数器 科学计算器 注意: @(java中用swing做一个windows计算器) 前言: 来看这篇教程估计都是java课程设计吧,现在已经没有公司很少使用swing组件了,java ...
- 假设做一个循环滚动UIScrollView
先上效果图: 首先初始化: - (void)viewDidLoad { //加入最后一张图 用于循环 int length = 4; NSMutableArray *tempArray = [NSMu ...
- 如何做一个导航栏————浮动跟伪类(hover)事件的应用
我们先说一下伪类选择器的写法: 写法:选择器名称:伪类状态{}4 常见伪类状态: 未访问:link 鼠标移上去:hover 激活选定:active 已访问:visited 获得焦点的时候触发:focu ...
- Labview一个循环中放两个事件结构会导致前面板锁定的问题
建议在同一个循环中,只放置一个事件结构.此时,当一个事件发生时,事件结构将对事件进行处理,然后继续循环,事件结构再等待下一个事件发生. 如在同一个循环中放置两个事件结构,只有在两个事件结构都处理了事件 ...
- VUE2.0+VUE-Router做一个图片上传预览的组件
之前发了一篇关于自己看待前端组件化的文章,但是由于学习和实践的业务逻辑差异,所以自己练习的一些demo逻辑比较简单,打算用vue重构现在公司做的项目,所以在一些小的功能页面上使用vue来做的,现在写的 ...
- [DataTable]控件排序事件中用DataView及DataTable排序
控件排序事件中用DataView及DataTable排序 文章分类:.net编程 在做ASP.NET页面开发时,经常要用到dataset(或者DataTable),绑定到DataGrid或GridVi ...
- 关于longPressGesture做一个长按连加的效果(原创)
关于longPressGesture做一个长按连加的效果 解释一下什么意思呢?就是一个button长按之后其数字的一直累加.朋友们可能看起来很简单,无非就是加一个长按手势(longPressGestu ...
- 关于Application_End 与 Application_Start事件触发情况的测试(待续)
测试项目搭建 定义一个简单的Mvc项目,有如下文件: (1) public class Startup { public void Configuration(IAppBuilder app) { a ...
- [转]jsPlumb插件做一个模仿viso的可拖拉流程图
原贴:https://www.cnblogs.com/sggx/p/3836432.html 前言 这是我第一次写博客,心情还是有点小小的激动!这次主要分享的是用jsPlumb,做一个可以给用户自定义 ...
随机推荐
- 创建git及其初始化
创建一个版本库非常简单,首先,选择一个合适的地方,创建一个空目录: $ mkdir learngit $ cd learngit $ pwd /Users/michael/learngit 初始化一个 ...
- Win10预览版激活信息
微软在10月2日零点正式公开了Win10预览版的下载地址,这个时间大家应该逐步开始安装工作了,因此提出下面两个问题的用户特别多,IT之家再稍作告知一下.1.Win10预览版安装密钥是什么?答:NKJF ...
- AngularJS THML DOM
AngularJS为HTML Dom元素属性提供了绑定应用数据的指令. data-ng-disabled指令直接提供了绑定应用程序的数据到HTML元素的disabled属性. <!DOCTYPE ...
- 当Java遇见了Html--Jsp详解篇
###一.什么是Jsp jsp是一种基于文本的程序,全名java server page,其特点是html和java程序共存.执行时jsp会被运行容器编译,编译后的jsp跟servlet一样,因此js ...
- 堆(heap)和栈(stack)几点认识
堆(heap)和栈(stack)主要的区别由以下几点:1.管理方式不同:2.空间大小不同:3.产生碎片不同:4.生长方向不同:5.分配归属不同:6.分配效率不同:7.存取效率不同:管理方式:对于栈来讲 ...
- HDU.2111 Saving HDU(贪心)
题目来源:Saving HDU 题意分析: XHD有个容量为v的口袋,有n个宝贝,每种宝贝的价值不一样,每种宝贝单位体积的价格也不一样,宝贝可以分割,分割后的价值和对应的体积成正比.求XHD最多能取回 ...
- WIN10使用安装包安装Mysql5.6+JDBC
很多教程教的是安装绿色版mysql或者是安装zip版的mysql,没什么不好,各有千秋,今天要教大家的是使用mysql-installer-community-5.6.43.0.msi安装mysql5 ...
- springMVC-数据绑定
定义: 将http请求中参数绑定到Handler业务方法 常用数据绑定类型 1. 基本数据类型 不能为其它类型和null值 2. 包装类 可以为其它对象,全部转成null值 3. 数组 多个对象 ...
- 基于mybatis设计简单信息管理系统2
1.空指针异常 public class CanvasServlet extends HttpServlet { private CanvasService canvasService; privat ...
- datatable常用设置
bSort: false, // 是否排序功能 bFilter: false, // 过滤功能 bPaginate: true, // 翻页功能 bInfo: true, // 页脚信息 bProce ...