Asp.Net 执行定时任务,我们要在Global.asax.cs中添加如下代码
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Security; using System.Web.SessionState; namespace SurveyOnline { public class Global : System.Web.HttpApplication { void Application_Start(object sender, EventArgs e) { // 在应用程序启动时运行的代码 System.Timers.Timer myTimer = new System.Timers.Timer(); //OnTimedEvent任务 myTimer.Elapsed += new System.Timers.ElapsedEventHandler(OnTimedEvent); //间隔1秒 myTimer.Interval = 1000; myTimer.Enabled = true; } void Application_End(object sender, EventArgs e) { // 在应用程序关闭时运行的代码 } void Application_Error(object sender, EventArgs e) { // 在出现未处理的错误时运行的代码 } void Session_Start(object sender, EventArgs e) { // 在新会话启动时运行的代码 } void Session_End(object sender, EventArgs e) { // 在会话结束时运行的代码。 // 注意: 只有在 Web.config 文件中的 sessionstate 模式设置为 // InProc 时,才会引发 Session_End 事件。如果会话模式设置为 StateServer // 或 SQLServer,则不会引发该事件。 } #region 定时任务 /// <summary> /// 定时任务处理 /// </summary> /// <param name="source"></param> /// <param name="e"></param> private static void OnTimedEvent(object source, System.Timers.ElapsedEventArgs e) { //获得当前时间单位 int eyear = e.SignalTime.Year; int emonth = e.SignalTime.Month; int eday = e.SignalTime.Day; int ehour = e.SignalTime.Hour; int eminute = e.SignalTime.Minute; int esecond = e.SignalTime.Second; //获取未处理的定时任务列表 DataTable task = getTimeTag(); for (int i = 0; i < task.Rows.Count; i++) { //定时任务的时间 string date_time = task.Rows[i]["dateTime"].ToString(); //分解时间 SortedList<string, int> sl = getDateTimeMap(date_time); //任务时间单位 int year = sl["year"]; int month = sl["month"]; int day = sl["day"]; int hour = sl["hour"]; int minute = sl["minute"]; int second = sl["second"]; //处理 当前时间 = 定时任务时间 if (eyear == year && emonth == month && eday == day && ehour == hour && eminute == minute && esecond == second) { string connectionString = "server=127.0.0.1;database=We7_CMS;uid=sa;pwd=123456"; SqlConnection myConnection = new SqlConnection(connectionString); string sql = "update Article set state=1 where ID='" + task.Rows[i]["articleID"].ToString() + "'"; string id = task.Rows[i]["id"].ToString(); SqlCommand myCommand = new SqlCommand(sql, myConnection); myConnection.Open(); myCommand.ExecuteNonQuery(); myConnection.Close(); updateTaskState(connectionString, id); } } } /// <summary> /// 修改定时任务表 任务状态 state /// </summary> /// <param name="connectionString">连接字符串</param> /// <param name="id">任务ID</param> private static void updateTaskState(string connectionString, string id) { SqlConnection myConnection = new SqlConnection(connectionString); string sql = "update TimerTask set state=1 where id=" + id; SqlCommand myCommand = new SqlCommand(sql, myConnection); myConnection.Open(); myCommand.ExecuteNonQuery(); myConnection.Close(); } /// <summary> /// 分解时间日期, 年 月 日 时 分 秒 得到每个单位的值 /// </summary> /// <param name="date_time">字符串日期 例如:2013-06-10 11:36:12</param> /// <returns>类似Map的键值集合</returns> private static SortedList<string, int> getDateTimeMap(string date_time) { string[] dts = date_time.Split(' '); string date = dts[0]; string time = dts[1]; string[] ymd = date.Split('-'); int year = Convert.ToInt32(ymd[0]); int month = Convert.ToInt32(ymd[1]); int day = Convert.ToInt32(ymd[2]); string[] hms = time.Split(':'); int hour = Convert.ToInt32(hms[0]); int minute = Convert.ToInt32(hms[1]); int second = Convert.ToInt32(hms[2]); SortedList<string, int> sl = new SortedList<string, int>(); sl.Add("year", year); sl.Add("month", month); sl.Add("day", day); sl.Add("hour", hour); sl.Add("minute", minute); sl.Add("second", second); return sl; } /// <summary> /// 获得未处理的定时任务 state=0 未处理 /// </summary> /// <returns>未处理的定时任务列表</returns> private static DataTable getTimeTag() { StringBuilder strSql = new StringBuilder(); strSql.Append("select * "); strSql.Append(" FROM TimerTasK where state=0 "); return SqlHelper.ExecuteDataTable(CommandType.Text, strSql.ToString(), null); } #endregion } }
相关推荐
quartz.net+TopShelf
asp.net定时任务,只要运行页面或者发布到iis(启动iis)之后每隔10秒执行一次
Asp.net(C#) 创建windows服务并定时执行某个接口,webservices等
在复杂的业务应用程序中,有时候会要求一个或者多个任务在一定的时间或者一定的时间间隔内计划进行,比如定时备份或同步数据库,定时发送电子邮件,定期处理用户状态信息,支付系统中定期同步异常账单等等,我们称之...
下面是每天零点执行一个存储过程
1.1.2 要点2:ASP.NET是编译执行的,而不是解释执行的 1.1.3 要点3:ASP.NET支持多语言 1.1.4 要点4:ASP.NET运行在公共语言运行库内 1.1.5 要点5:ASP.NET是面向对象的 1.1.6 要点6:ASP.NET支持所有的...
深入剖析ASP.NET组件设计]一书第三章关于ASP.NET运行原理讲述的补白 asp.net 运行机制初探(httpModule加载) 利用反射来查看对象中的私有变量 关于反射中创建类型实例的两种方法 ASP.Net应用程序的多进程模型 NET委托...
Quartz.NET是一个强大、开源、轻量的作业调度框架,是 OpenSymphony 的 Quartz API 的.NET移植,用C#改写,可用于winform和asp.net应用中。它灵活而不复杂。你能够用它来为执行一个作业而创建简单的或复杂的作业调度...
开发中,经常遇到需要定时执行某个任务的需要。可以用数据库的计划任务完成,也可以用代码完成。.net环境下的Quartz就是非常好的解决方案。Quartz有自己的语言,类似正则也有表达的方式,还是需要学习一下的。
1.1.2 要点2:ASP.NET是编译执行的,而不是解释执行的 3 1.1.3 要点3:ASP.NET支持多语言 4 1.1.4 要点4:ASP.NET运行在公共语言运行库内 6 1.1.5 要点5:ASP.NET是面向对象的 7 1.1.6 要点6:ASP.NET支持...
在ASP.NET程序中,可以通过Time组件实现定时器功能,但是它与数据库中的任务计划不一样,它必须基于程序正在运行中才可生效,而数据库任务计划是不需要基于ASP.NET程序运行而执行任务。
里的定时间点执行任务,指的是每天的某个时间执行一项任务。
asp.net项目中所用到的计划任务代码,可以定时执行任务 1.在asp.net 项目中添加App.cs这个类 public class App { public static int Counter { get; set; } public static void Init() { var random = new ...
在业务复杂的应用程序中,有时候会要求一个或者多个任务在一定的时间或者一定的时间间隔内计划进行,比如定时备份或同步数据库,定时发送电子邮件等,我们称之为计划任务。实现计划任务的方法也有很多,可以采用SQL...
定时任务:在线(添加、修改、删除)任务调度,包含执行结果日志 系统Api:Api文档与测试工具 数据表管理:查看当前数据库所有表、字段及记录总数 代码生成:快速生成对单表的增删改查 服务器信息:查看服务器...
我们经常会在网站中加一些定时执行的任务,比如生成静态页、执行邮件发送等。 可以通过在Global.asax中这样设置来实现。 代码如下: void Application_Start(object sender, EventArgs e) { // 在应用程序启动时...
本系统的主要任务是提供用户之间实时的交流,方便用户之间相互的沟通。 1.系统登录。登录模块采用基于标准的MVC架构的开发模式。与一般的登录系统相似,主要是对登录用户的身份进行合法性验证。登录状态分为两种:...
E桶金行业搜索引擎系统...蜘蛛程序每执行一阶段采集任务后,自动释放cpu和内存,避免蜘蛛一直执行会挂死。 该程序为ASP.NET2.0版本程序,只要空间支持asp.net2.0即可。 需要确保iis的默认文档中包含default.aspx