【ASP.NET 进阶】定时执行任务
原理:利用全局应用程序类 Global.asax 和 System.Timers.Timer 类定时处理任务。
示例效果图:
其 Global.asax 类代码如下:
- using System;
- using System.Collections.Generic;
- using System.IO;
- using System.Linq;
- using System.Net;
- using System.Threading;
- using System.Timers;
- using System.Web;
- using System.Web.Security;
- using System.Web.SessionState;
- namespace TimingTask
- {
- /**
- *原理:Global.asax 可以是asp.net中应用程序或会话事件处理程序,
- *我们用到了Application_Start(应用程序开始事件)和Application_End(应用程序结束事件)。
- *当应用程序开始时,启动一个定时器,用来定时执行任务YourTask()方法,
- *这个方法里面可以写上需要调用的逻辑代码,可以是单线程和多线程。
- *当应用程序结束时,如IIS的应用程序池回收,让asp.net去访问当前的这个web地址。
- *这里需要访问一个aspx页面,这样就可以重新激活应用程序。
- */
- public class Global : System.Web.HttpApplication
- {
- //在应用程序启动时运行的代码
- protected void Application_Start(object sender, EventArgs e)
- {
- //定时器
- System.Timers.Timer myTimer = new System.Timers.Timer();
- myTimer.Elapsed += new ElapsedEventHandler(myTimer_Elapsed);
- myTimer.Enabled = true;
- myTimer.AutoReset = true;
- }
- private void myTimer_Elapsed(object source, ElapsedEventArgs e)
- {
- try
- {
- RunTheTask();
- }
- catch (Exception ex)
- {
- WebForm1.html = ex.Message;
- }
- }
- private void RunTheTask()
- {
- //在这里写你需要执行的任务
- WebForm1.html = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + ":AutoTask is Working!";
- }
- // 在新会话启动时运行的代码
- protected void Session_Start(object sender, EventArgs e)
- {
- }
- protected void Application_BeginRequest(object sender, EventArgs e)
- {
- }
- protected void Application_AuthenticateRequest(object sender, EventArgs e)
- {
- }
- // 在出现未处理的错误时运行的代码
- protected void Application_Error(object sender, EventArgs e)
- {
- }
- // 在会话结束时运行的代码。
- protected void Session_End(object sender, EventArgs e)
- {
- // 注意: 只有在 Web.config 文件中的 sessionstate 模式设置为
- // InProc 时,才会引发 Session_End 事件。如果会话模式设置为 StateServer
- // 或 SQLServer,则不会引发该事件
- }
- // 在应用程序关闭时运行的代码
- protected void Application_End(object sender, EventArgs e)
- {
- WebForm1.html = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + ":Application End!";
- //下面的代码是关键,可解决IIS应用程序池自动回收的问题
- Thread.Sleep();
- //这里设置你的web地址,可以随便指向你的任意一个aspx页面甚至不存在的页面,目的是要激发Application_Start
- string url = "WebForm1.aspx";
- HttpWebRequest myHttpWebRequest = (HttpWebRequest)WebRequest.Create(url);
- HttpWebResponse myHttpWebResponse = (HttpWebResponse)myHttpWebRequest.GetResponse();
- Stream receiveStream = myHttpWebResponse.GetResponseStream();//得到回写的字节流
- }
- }
- }
然后用 WebForm 页面输出定时效果:
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Web;
- using System.Web.UI;
- using System.Web.UI.WebControls;
- namespace TimingTask
- {
- public partial class WebForm1 : System.Web.UI.Page
- {
- public static String html = "";
- protected void Page_Load(object sender, EventArgs e)
- {
- if (!IsPostBack)
- {
- GetDataBind();
- }
- }
- private void GetDataBind()
- {
- for (int i = ; i <; i++)
- {
- System.Threading.Thread.Sleep();
- Response.Write(html+"<br />");
- }
- }
- }
- }
【ASP.NET 进阶】定时执行任务的更多相关文章
- 基于ASP.NET MVC定时执行任务调度
相对FluentScheduler实现定时调度任务的使用简单,配置少的特点,Quartz.Net则配置稍微复杂一些.下面我们就接合一个 ASP.NET MVC网站应用程序的定时执行任务调试的小实例来了 ...
- Asp.net Global 定时执行
在复杂的业务应用程序中,有时候会要求一个或者多个任务在一定的时间或者一定的时间间隔内计划进行,比如定时备份或同步数据库,定时发送电子邮件,定期处理用户状态信息,支付系统中定期同步异常账单等等,我们称之 ...
- asp.net web 定时执行任务 定时器 Global.asax
web网站里面,需要每隔1分钟,执行一个任务,并且一直保持这个定时执行状态,可以用如下一个方法: 以下代码是 Global.asax.cs 的全部代码. using System; using Sys ...
- 【ASP.NET 进阶】定时执行任务实现 (定时读取和修改txt文件数字内容,无刷新显示结果)
现在有很多网站或系统需要在服务端定时做某件事情,如每天早上8点半清理数据库中的无效数据等等,Demo 具体实现步骤如下: 0.先看解决方案截图 1.创建ASP.NET项目TimedTask,然后新建一 ...
- 使用ASP.NET实现Windows Service定时执行任务
转载http://blog.csdn.net/yanghua_kobe/article/details/6937816 我们怎样才能在服务器上使用asp.net定时执行任务而不需要安装windows ...
- ASP.NET 中的定时执行任务
在一个网站中,设定一些任务能够在后台定时执行. public static void AddTask(int seconds, Action todo) { HttpRuntime.Cache.Ins ...
- asp.net web 服务器端全局定时执行任务
web网站里面,需要每隔1分钟,执行一个任务,并且一直保持这个定时执行状态,可以用如下一个方法: 1,Global.asax里面的 Application_Start ,发生在第一次请求网站的时 ...
- ASP.NET MVC计划任务实现方法(定时执行某个功能)
系统中定时执行某个任务是比较常用的功能,如一个部门定期向上级部门上报数据是一个典型的例子,下面就简单说说在.net mvc中如何实现定时执行某个功能的方法. 1.首先修改Glocal.asax文件,在 ...
- ASP.NET MVC4计划任务实现方法(定时执行某个功能)
系统中定时执行某个任务是比较常用的功能,如一个部门定期向上级部门上报数据是一个典型的例子,下面就简单说说在.net mvc中如何实现定时执行某个功能的方法. 1.首先修改Glocal.asax文件,在 ...
随机推荐
- CentOS 7.2 搭建 Openvpn 服务器
本文将以目前最新的openvpn-2.3.13.tar.gz为例来介绍如何在Linux系统中安装.配置及使用OpenVPN. 在这里,我们选用了一台预装CentOS 7.2 64位系统的计算机作为Op ...
- LinQ实战学习笔记(四) LINQ to Object, 常用查询操作符
这一篇介绍了下面的内容: 查询object数组 查询强类型数组 查询泛型字典 查询字符串 SelectMany 索引 Distinct操作符 排序 嵌套查询 分组 组连接 内连接 左外连接 交叉连接 ...
- Design Patterns (简单工厂模式)
文章很长很精彩,如是初学请耐心观看.(大神请绕道!) 简单工厂模式: 1.创建型模式 2.简单工厂模式概述 3.简单工厂模式的结构与实现 4.简单工厂模式的应用实例 5.创建对象与使用对象 6.简单工 ...
- Flexbox实现垂直水平居中
Flexbox(伸缩盒)是CSS3中新增的特性,利用这个属性可以解决页面中的居中问题.只需要3行代码就可以实现,不需要设置元素的尺寸,能够自适应页面. 这个方法只能在现代浏览器上有效,IE10+.ch ...
- 删除src值为空的img标签
今天刚刚完成了一个官网的前后台整站建设,虽然不是很复杂,但感觉获益良多.由于涉及到一点后台问题,所以期间遇到了不少问题.学到的东西,得作个总结.今天先讲讲img的路径问题.由于现在很多网站喜欢全屏大图 ...
- 导入myeclipse项目出现的问题及解决方案
1.myeclipse 方法上加上@Override就报错 在有@Override方法上面会报错如下: The method oncreate(Bundle) of type HelloWorld m ...
- 极光推送和百度lbs android sdk一起使用使用proguard 混淆的问题
主要是http得类被混淆后,导致apk定位失败.经过确认,保留apache 的http类就好了 # To enable ProGuard in your project, edit project.p ...
- Android系统提供的开发常用的包名及作用
android.app :提供高层的程序模型.提供基本的运行环境 android.content :包含各种的对设备上的数据进行访问和发布的类 android.database :通过内容提供者浏览和 ...
- 【原】iOS下KVO使用过程中的陷阱
KVO,全称为Key-Value Observing,是iOS中的一种设计模式,用于检测对象的某些属性的实时变化情况并作出响应.网上广为流传普及的一个例子是利用KVO检测股票价格的变动,例如这里.这个 ...
- 安装VVDocumenter-Xcode-master (Xcode 7.1)的过程
下载地址: http://pan.baidu.com/s/1boxvewB 1.首先下载解压压缩包打开VVDocumenter工程,编译一遍(快捷键com+B) 2.在finder里面的应用程序,找到 ...