文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>asp.net 对于计划任务的整理,支持多个任务

asp.net 对于计划任务的整理,支持多个任务

时间:2010-08-27  来源:风骚net

  最近研究了一下计划任务 task的实现,做了一下整理。

  首先创建类

TaskScheduler using System.Collections;
using System.Threading;

namespace Metrial
{
    /// <summary>
    /// TaskScheduler 的摘要说明
    /// </summary>
    public class TaskScheduler
    {
        /// <summary>
        /// 执行方法接口
        /// </summary>
        public interface ISchedulerJob
        {
            /// <summary>
            /// 执行方法
            /// </summary>
            void Execute();
        }

        /// <summary>
        /// 任务sample1
        /// </summary>
        public class Method1 : ISchedulerJob
        {
            public void Execute()
            {
                //需要定时执行的方法1
            }
        }

        /// <summary>
        /// 任务sample2
        /// </summary>
        public class Method2 : ISchedulerJob
        {
            public void Execute()
            {
                //需要定时执行的方法2
            }
        }


        // 接下来,我们建立一个配置对象,告诉调度引擎执行什么任务和执行的时间间隔。
        /// <summary>
        /// 
        /// </summary>
        public class SchedulerConfiguration
        {
            //时间间隔
            //任务列表
            /// <summary>
            /// 
            /// </summary>
            private readonly ArrayList jobs = new ArrayList();

            /// <summary>
            /// 线程睡眠时间设置
            /// </summary>
            /// <value>The sleep interval.</value>
            public int SleepInterval { get; private set; }

            /// <summary>
            /// 需完成的工作列表
            /// </summary>
            /// <value>The jobs.</value>
            public ArrayList Jobs { get { return jobs; } }

            public SchedulerConfiguration(int newSleepInterval)
            {
                SleepInterval = newSleepInterval;
            }
        }

        //下面就是调度引擎,定时执行配置对象的任务
        /// <summary>
        /// 
        /// </summary>
        public class Scheduler
        {
            /// <summary>
            /// 
            /// </summary>
            private readonly SchedulerConfiguration configuration;

            /// <summary>
            /// Initializes a new instance of the <see cref="Scheduler"/> class.
            /// </summary>
            /// <param name="config">The config.</param>
            public Scheduler(SchedulerConfiguration config)
            {
                configuration = config;
            }

            /// <summary>
            /// Starts this instance.
            /// </summary>
            public void Start()
            {
                while (true)
                {
                    //执行每一个任务
                    foreach (ISchedulerJob job in configuration.Jobs)
                    {
                        var myThreadDelegate = new ThreadStart(job.Execute);
                        var myThread = new Thread(myThreadDelegate);
                        myThread.Start();
                    }
                    Thread.Sleep(configuration.SleepInterval);
                }
            }
        }
    }
}
 

  接着实现计划的方法

Task public void Task()
        {
            var config = new TaskScheduler.SchedulerConfiguration(1000 * 60 * 10);
            config.Jobs.Add(new TaskScheduler.Method1());
            config.Jobs.Add(new TaskScheduler.Method2());
            var scheduler = new TaskScheduler.Scheduler(config);
            var myThreadStart = new System.Threading.ThreadStart(scheduler.Start);
            var schedulerThread = new System.Threading.Thread(myThreadStart);
            schedulerThread.Start();
        }
 

  最后在Global.asax的Application_Start事件中调用Task方法。具体方法可在TaskScheduler中的Method1,Method2实现。

 

 

 

  

相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载