zoukankan      html  css  js  c++  java
  • asp.net简单定时任务实现

    代码如下:

        public class TimeTask
        {
            #region 单例
    
            private static TimeTask _task = null;
    
            public static TimeTask Instance
            {
                get
                {
                    if (_task == null)
                    {
                        _task = new TimeTask();
                    }
                    return _task;
                }
            }
    
            #endregion
    
            //事件
            public event System.Timers.ElapsedEventHandler ExecuteTask;
    
            //时间对象
            private System.Timers.Timer _timer = null;
    
            //定义时间间隔
            private int _interval = 1000;//默认1秒钟
            public int Interval
            {
                set
                {
                    _interval = value;
                }
                get
                {
                    return _interval;
                }
            }
    
            //开始
            public void Start()
            {
                if (_timer == null)
                {
                    _timer = new System.Timers.Timer(_interval);
                    _timer.Elapsed += new System.Timers.ElapsedEventHandler(_timerElapsed);
                    _timer.Enabled = true;
                    _timer.Start();
                }
            }
    
            //委托方法,映射到传入的值
            protected void _timerElapsed(object sender, System.Timers.ElapsedEventArgs e)
            {
                if (null != ExecuteTask)
                {
                    ExecuteTask(sender, e);
                }
            }
    
            //停止
            public void Stop()
            {
                if (_timer != null)
                {
                    _timer.Stop();
                    _timer.Dispose();
                    _timer = null;
                }
            }
    
        }

    调用方式,在Global.asax中,代码如下:

         protected void Application_Start(object sender, EventArgs e)
            {
                // 在应用程序启动时运行的代码  
                TimeTask.Instance.ExecuteTask += new System.Timers.ElapsedEventHandler(TimeExecuteTask);
                TimeTask.Instance.Interval = 1000 * 10;//时间间隔,10秒钟
                TimeTask.Instance.Start();
            }
    
            void TimeExecuteTask(object sender, System.Timers.ElapsedEventArgs e)
            {
                //在这里编写需要定时执行的逻辑代码
                System.Diagnostics.Debug.WriteLine("定时任务执行" + DateTime.Now);
            }

    说明:由于IIS会进行回收,所以还需要在IIS的线程池上配置不让其回收。如下:

    回收:

    固定时间间隔(分钟) 改为 0

    虚拟/专用内存限制(KB) 改为 0

    进程模型:

    闲置超时(分钟) 改为 0

  • 相关阅读:
    软件包的作用
    Sqlserver2008 表分区教程
    C#通用类型转换 Convert.ChangeType
    缓存 HttpContext.Current.Cache和HttpRuntime.Cache的区别
    用户信息 Froms验证票证
    .NET4.0 __doPostBack未定义
    TFS2012 安装 配置笔记
    MVC学习笔记一
    新博客..第一天..
    ORACLE多表查询优化
  • 原文地址:https://www.cnblogs.com/EasonJim/p/6322580.html
Copyright © 2011-2022 走看看