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,做一个可以给用户自定义 ...
随机推荐
- apache单ip配置多端口多站点
1.修改 /etc/httpd/conf/httpd.conf 添加一个Listen,如: Listen 80 Listen 8001 Listen 8002 2.添加一个VirtualHost #v ...
- 第50章 读写内部FLASH—零死角玩转STM32-F429系列
第50章 读写内部FLASH 全套200集视频教程和1000页PDF教程请到秉火论坛下载:www.firebbs.cn 野火视频教程优酷观看网址:http://i.youku.com/fire ...
- python的**和*
1.**两个乘号就是乘方,比如2**4,结果就是2的4次方,结果是16一个乘号*,如果操作数是两个数字,就是这两个数字相乘,如2*4,结果为8*如果是字符串.列表.元组与一个整数N相乘,返回一个其所有 ...
- django批量form表单处理
1.应用说明 一般在表单信息录入中,如果存在许多重复提交的信息,我们就需要进行批量处理,比如学生信息的批量录入. 这里一种方式就是使用xlrd模块处理,把学生信息录入到系统内 另外一种方式就是采用我们 ...
- JavaScript_DOM学习篇_图片切换小案例
今天开始学习DOM操作,下面写一个小案例来巩固下知识点. DOM: document object model (文档对象模型) 根据id获取页面元素 : 如: var xx = document.g ...
- JavaScript的变量命名规则和关键字的介绍
变量的名字 就像 人的名字一样,不能乱起. 你的代码不是只有你一个人看,变量既然是名字,那就这个名字就要有特殊的意义: 举个栗子:翠花,我们能从这个名字中得到什么信息?(这个 ...
- 【学时总结】◆学时·VIII◆ 树形DP
◆学时·VIII◆ 树形DP DP像猴子一样爬上了树……QwQ ◇ 算法概述 基于树的模型,由于树上没有环,满足DP的无后效性,可以充分发挥其强大统计以及计算答案的能力. 一般来说树形DP的状态定义有 ...
- 异构数据库迁移——DATAX
背景 在最近接触到的一个case里面,需要把db2的数据迁移至oracle,客户可接收的停机时间为3小时. 同步方式的比较 一说到停机时间,大家第一时间想到Oracle公司的GoldenGate实时同 ...
- 近年来爆发的CVE漏洞编号
1.Office漏洞 Office漏洞是大部分APT组织最喜爱的漏洞,Office在个人办公电脑使用量大,对针对性目标是最佳的外网入口,效果也是最直接的. CVE编号 漏洞类型 使用组织 CVE-2 ...
- Oracle导入导出.sql、.dmp文件
Oracle导出导入表(.sql..dmp文件)两种方法 提示:在导入sql和dmp文件之前,先建立用户,指明表空间.其中要注意用户名和表空间最好跟sql文件中的一样. 建表空间授权参考 :http: ...