標籤:style blog color 資料 art for
計劃任務 : 個人理解, 就是後台控製程序要求在一定的時間執行相應的任務.
直接上代碼:
之前,因為工作需要. 要求每天在淩晨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(); }
這樣, 一個簡單的計劃任務,就實現了.