asp.net程序一般是当用户请求一个Page,或者请求一个WebService的时候,才会执行一段代码,如果我们希望让程序定时自动执行代码,但是又不增加新的应用程序,应该怎么做呢?

首先,给你的web应用程序,添加一个“Global.asax”文件,这个类里面默认有一个“Application_Start”,我们就在这个方法里面添加定时程序的逻辑代码。这样,只要有一个人访问了这个web应用,就会启动这个定时程序。

为了方便我们对定时程序的管理,我们单独编写一个类,专门用于控制定时程序。这个类中用的核心对象是System.Timers.Timer。下面说一下这个类设计的基本思路:ExecuteTask是一个公共的事件对象,以后调用者可以利用它来添加回调函数。_task是这个类型的唯一静态实例,调用者可以用Instance()方法读取它。_timer就是实现定时运行的对象,Interval是运行的间隔时间。

public class Time_Task
{
    public event System.Timers.ElapsedEventHandler ExecuteTask;

private static readonly Time_Task _task = null;
    private System.Timers.Timer _timer = null;
    private int _interval = 1000;

public int Interval
    {
        set
        {
            _interval = ;
        }
        get
        {
            return _interval;
        }
    }
    static Time_Task()
    {
        _task = new Time_Task();
    }
    public static Time_Task Instance()
    {
        return _task;
    }
    public void Start()
    {
        if(_timer == null)
        {
            _timer = new System.Timers.Timer(_interval);
            _timer.Elapsed += new System.Timers.ElapsedEventHandler(_timer_Elapsed);
            _timer.Enabled = true;
            _timer.Start();
        }
    }
    protected void _timer_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
    {
        if(null != ExecuteTask)
        {
            ExecuteTask(sender, e);
        }
    }
    public void Stop()
    {
        if(_timer != null)
        {
            _timer.Stop();
            _timer.Dispose();
            _timer = null;
        }
    }
}

有了这个类型,我们可以在Application_Start方法中轻松的实现定时了。

protected void Application_Start(object sender, EventArgs e)
{
    Time_Task.Instance().ExecuteTask += new System.Timers.ElapsedEventHandler(Global_ExecuteTask);
    Time_Task.Instance().Interval = 1000 * 60;//表示间隔1分钟
    Time_Task.Instance().Start();
}

void Global_ExecuteTask(object sender, System.Timers.ElapsedEventArgs e)
{
    //在这里编写需要定时执行的逻辑代码
}

需要注意的是,当你重新部署web应用的时候,比如更新了DLL文件,或者修改了web.config文件,就会中止这个定时程序,需要有人再次请求Page,才能把它启动起来。

如何让asp.net应用程序定时自动执行代码相关推荐

  1. Linux中的定时自动执行功能(at,crontab)

    Linux中的定时自动执行功能(at,crontab) 概念 在Linux系统中,提供了两种提前对工作进行安排的方式 at 只执行一次 crontab 周期性重复执行 通过对这两个工具的应用可以让我们 ...

  2. SQL server 定时自动执行SQL存储过程

    当一个存储过程是为了生成报表,并且是周期性的,则不需要人工干预,由SQL作业定时自动执行些SQL存储过程即可. 本示例,假设已需要定时执行的存储过程为:Pr_test 工具/原料 SQL Server ...

  3. 在SQL server中如何定时自动执行存储过程

    在SQL server中如何定时自动执行存储过程 1.首先开启sql代理服务 2.打开sqlserver软件 3.拉开SQL Server 服务菜单 4.右键作业,点击新增作业 5.在一般中添加名称和 ...

  4. Python在程序退出前执行代码

    文章目录 问题描述 解决方案 注册函数 装饰器 参考文献 问题描述 在程序退出前执行代码 解决方案 使用内置库 atexit 注册程序退出前要执行的函数,即使程序崩溃,都会执行 注册函数 import ...

  5. MYSQL 定时自动执行任务

    MYSQL5.1开始支持EVENT功能,类似Oracle和MSSQL的定时任务job功能.有了这个功能之后我们就可以让MySQL自动的执行存储过程来实现数据汇总等功能了,不用像以前哪样手动操作完成了. ...

  6. mysql 手动执行event_MYSQL 定时自动执行EVENT

    MySQL从5.1开始支持EVENT功能,类似Oracle和MSSQL的定时任务job功能.有了这个功能之后我们就可以让MySQL自动的执行存储过程来实现数据汇总等功能了,不用像以前哪样手动操作完成了 ...

  7. mysql 自动执行语句_MYSQL 定时自动执行任务

    MYSQL5.1开始支持EVENT功能,类似Oracle和MSSQL的定时任务job功能.有了这个功能之后我们就可以让MySQL自动的执行存储过程来实现数据汇总等功能了,不用像以前哪样手动操作完成了. ...

  8. Windows定时自动执行bat脚本命令

    假设,我需要在8:00定时执行autoExec.bat脚本. 那么,我在cmd创建一条命令即可. schtasks /create /tn "MyNBA" /tr D:\test\ ...

  9. java web 启动时执行_java Web 启动时自动执行代码的几种方式

    Web容器启动后执行代码的几种方式,其执行顺序为:4===>5===>1===>2===>3,即指定init-method的Bean开始执行,接着实现spring的Bean后置 ...

最新文章

  1. 使用ssh工具链接mysql_mycli辅助工具-更方便得通过ssh tunnel连接线上MySQL
  2. 废旧光盘手工小制作_佳味家味浓 丨佳人美食手工零食课堂:咸蛋黄牛轧糖夹心小饼干制作活动...
  3. 陌陌财报双双超预期,什么才是它的基本盘?
  4. Jenkins转换成中文(Jenkins汉化)
  5. java list 拆分_Java面试题怎么确保一个集合不能被修改?
  6. OpenStack Juno系列之计算节点搭建
  7. IIC通信---EEPROM24C02---STMF4
  8. Android4.0的Alertdialog对话框,设置点击其他位置不消失
  9. XML解析技术简介——(一)
  10. Mysql约束 笔记
  11. nlog自定义文件名
  12. java正则表达式验证_Java中的正则表达式电话号码验证
  13. 设置将Maven的jar包发布到lib
  14. freeSWITCH中动态加载模块
  15. 摩托罗拉里程碑2刷android 2.3.4
  16. 星际萤火|人民日报:IPFS将带来无盗版网络时代?
  17. 创建Web站点的欢迎页面
  18. mysql解压版id是什么_mysq解压版安装(windos 7 10)
  19. 函数平移口诀_三角函数平移伸缩变换口诀是什么
  20. swagger支持中英文

热门文章

  1. C和C++循环链表的设计与实现
  2. C++ Multimaps
  3. pandas.DataFrame.iloc的使用
  4. B03_NumPy创建数组(numpy.empty,numpy.zeros,numpy.ones)
  5. 5.单行函数,多行函数,字符函数,数字函数,日期函数,数据类型转换,数字和字符串转换,通用函数(case和decode)
  6. 8.Boost之unordered_set
  7. 配置DispatcherServlet
  8. Oracle分组函数
  9. 你该认识这样的Linux_shell之循环控制
  10. 软件需求和结构_软件体系结构