• 一个定时完成任务的类(使用线程)


      1 using System;
      2 using System.Threading;
      3 using System.Collections;
      4 using System.Data;
      5 using System.Configuration;
      6 using System.Web;
      7 using System.Web.Security;
      8 using System.Web.UI;
      9 using System.Web.UI.WebControls;
     10 using System.Web.UI.WebControls.WebParts;
     11 using System.Web.UI.HtmlControls;
     12 namespace Xr
     13 {
     14     
     15 
     16     /// <summary>
     17     /// IScheduler 的摘要说明。
     18     /// </summary>
     19     public interface ISchedulerJob
     20     {
     21         void Execute();
     22     }
     23 
     24 
     25     #region SchedulerConfiguration,主要实现调度的配置,保存调度任务和设置调度的间隔时间
     26     public class SchedulerConfiguration
     27     {
     28         private int sleepInterval;
     29         private ArrayList jobs = new ArrayList();
     30 
     31         public int SleepInterval { get { return sleepInterval; } }
     32         public ArrayList Jobs { get { return jobs; } }
     33 
     34         public SchedulerConfiguration(int newSleepInterval)
     35         {
     36             sleepInterval = newSleepInterval;
     37         }
     38 
     39     }
     40     #endregion
     41 
     42     #region Scheduler,调度的核心程序,启动必须要得工作线程
     43 
     44     public class Scheduler
     45     {
     46         private SchedulerConfiguration configuration = null;
     47 
     48         public Scheduler(SchedulerConfiguration config)
     49         {
     50             configuration = config;
     51         }
     52 
     53         public void Start()
     54         {
     55             while (true)
     56             {
     57                 try
     58                 {
     59                     //for each job, call the execute method
     60                     foreach (ISchedulerJob job in configuration.Jobs)
     61                     {
     62                         job.Execute();
     63                     }
     64                 }
     65                 catch { }
     66                 finally
     67                 {
     68                     Thread.Sleep(configuration.SleepInterval);
     69                 }
     70             }
     71         }
     72     }
     73 
     74 
     75     #endregion
     76 
     77     #region 调度的代理模块,目前比较简单,就提供了start和stop的方法,另外就是查看是否正在运行
     78     public class SchedulerAgent
     79     {
     80         private static System.Threading.Thread schedulerThread = null;
     81         public static void StartAgent()
     82         {
     83             SchedulerConfiguration config =
     84                 new SchedulerConfiguration(3600 * 1000);
     85             //3600秒扫描一次
     86             config.Jobs.Add(new AlertJob());
     87             Scheduler scheduler = new Scheduler(config);
     88             System.Threading.ThreadStart myThreadStart =
     89                 new System.Threading.ThreadStart(scheduler.Start);
     90             schedulerThread = new System.Threading.Thread(myThreadStart);
     91             schedulerThread.Start();
     92         }
     93         public static void Stop()
     94         {
     95             if (null != schedulerThread)
     96             {
     97                 schedulerThread.Abort();
     98             }
     99         }
    100         public static bool Status
    101         {
    102             get
    103             {
    104                 return (schedulerThread == null? false : schedulerThread.IsAlive;
    105             }
    106         }
    107     }
    108     #endregion
    109 
    110     #region 调度工作的示范类,实现ISchedulerJob接口就可以
    111     public class AlertJob : ISchedulerJob
    112     {
    113         
    114 
    115         public AlertJob()
    116         {
    117 
    118 
    119         }
    120 
    121         /// <summary>
    122         /// 定时完成具体的某项事务
    123         /// </summary>
    124         public void Execute()
    125         {
    126             // TODO:  添加 FileWriteJob.Execute 实现
    127 
    128 
    129           
    130             
    131 
    132         }
    133     }
    134     #endregion
    135 }



    可以在Global.asax中直接调用SchedulerAgent的静态方法,当然可以提供一些构造的参数进行初值化。

      void Application_Start(object sender, EventArgs e)
        {
            // 在应用程序启动时运行的代码

        Xr.SchedulerAgent.StartAgent();

        }

       void Application_End(object sender, EventArgs e)
        {
            //  在应用程序关闭时运行的代码

            Xr.SchedulerAgent.Stop();
        }



  • 相关阅读:
    如何自动生成图片用于测试 pytorch(No image? No need image)
    深度学习中Dropout原理解析
    关于深度学习中的batch_size
    每日一问
    flask中使用ajax 处理前端请求,每隔一段时间请求不通的接口,结果展示同一页面
    flask中使用ajax 处理前端请求,每隔一段时间请求一次
    flask中使用ajax 处理前端请求,结果展示在同一页面,不点击页面不展示
    appium 使用name 定位报错 Locator Strategy 'name' is not supported for this session
    robot framework 中一条用例执行失败,终止其他用例执行
    python 实现定时任务
  • 原文地址:https://www.cnblogs.com/xiaorong/p/1143075.html
Copyright © 2020-2023  润新知