zoukankan      html  css  js  c++  java
  • C# 计划任务

       计划任务 :  个人理解, 就是后台控制程序要求在一定的时间执行相应的任务.

       直接上代码:

           之前,因为工作需要. 要求每天在凌晨2:00,执行要做的数据

      1.1  声明一个接口 Ijob

              方法: 执行

        public interface IJob
        {
            //执行方法
            void Execute();
        }
    

      1.2 声明一个调度程序配置类

             属性: 任务列表 (要实行的任务) ,  时间间隔 (多久执行一次);

        /// <summary>
        /// 调度程序配置
        /// </summary>
        public class SchedulerConfiguration
        {
            private int sleepInterval;
            private List<IJob> jobs = new List<IJob>();
            public SchedulerConfiguration(int newsleepInterval)
            {
                this.SleepInterval = newsleepInterval;
            }
    
            /// <summary>
            /// 任务列表
            /// </summary>
            public List<IJob> Jobs
            {
                get { return jobs; }
    
            }
            /// <summary>
            /// 时间间隔
            /// </summary>
            public int SleepInterval
            {
                get { return sleepInterval; }
                set { sleepInterval = value; }
            }

       1.3  声明调度程序类

             方法:  开启

             属性:  调度程序配置对象

        /// <summary>
        /// 调度程序
        /// </summary>
        public class Scheduler
        {
            private SchedulerConfiguration configuration = null;
            public Scheduler(SchedulerConfiguration SchedulerConn)
            {
                Sconn = SchedulerConn;
            }
    
            /// <summary>
            /// 开始执行的方法
            /// </summary>
            public void Start()
            {
                while (true)
                {
                    foreach (IJob job in configuration.Jobs)
                    {
                        ThreadStart _threadDelegate = new ThreadStart(job.Execute);
                        Thread _thread = new Thread(_threadDelegate);
                        _thread.Start();
                        Thread.Sleep(configuration.SleepInterval);
                        
                    }
                }
            }
    
            /// <summary>
            /// 调度程序配置信息
            /// </summary>
            public SchedulerConfiguration Sconn
            {
                get { return configuration; }
                set { configuration = value; }
            }

      1.4   实现 : Ijob接口

     class person : IJob
        {
    
            void IJob.Execute()
            {
                ThreadTest();
            }
            public void ThreadTest(){
                  //......
            }
        }        

     1.5  在程序入口(主线程)  运行

           public static System.Threading.Thread schedulerThread = null;
            static void Main(string[] args)
            {
                //调度程序配置(每小时执行一次)
                SchedulerConfiguration config = new SchedulerConfiguration(1000 * 60 * 60);
                //给配置添加工作
                config.Jobs.Add(new person());
                //调度程序
                Scheduler scheduler = new Scheduler(config);
                //执行线程
                schedulerThread = new System.Threading.Thread(new ThreadStart(scheduler.Start));
                schedulerThread.Start();
            }

     这样, 一个简单的计划任务,就实现了.

  • 相关阅读:
    [LeetCode] 811. Subdomain Visit Count
    [LeetCode] 993. Cousins in Binary Tree
    [LeetCode] 443. String Compression
    [LeetCode] 448. Find All Numbers Disappeared in an Array
    [LeetCode] 442. Find All Duplicates in an Array
    [LeetCode] 4. Median of Two Sorted Arrays
    [LeetCode] 983. Minimum Cost For Tickets
    [LeetCode] 322. Coin Change
    [LeetCode] 249. Group Shifted Strings
    [LeetCode] 1009. Complement of Base 10 Integer
  • 原文地址:https://www.cnblogs.com/mingxuantongxue/p/3822460.html
Copyright © 2011-2022 走看看