1. 程式人生 > >FluentScheduler定時器計劃任務

FluentScheduler定時器計劃任務

任務 package cond 一個 src 難點 作業 做到 下午

http://www.cnblogs.com/lgxlsm/p/6734011.html

用了FluentScheduler後,再也比想用timer計時器了。

FluentScheduler 是 .Net 下,可以讓你輕松實現定時任務的工具,不需要再去寫Windows服務了,更重要的是時間設置起來靈活很多,定時任務難點不就是在這麽。

1.nuget包

<?xml version="1.0" encoding="utf-8"?>
<packages>
  <package id="FluentScheduler" version="5.1.4" targetFramework="net45" />
</packages>

2.使用例子

技術分享圖片
using FluentScheduler;
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace FluentSchedulerTest
{
    public static class Scheduler
    {
        /// <summary>
        /// 啟動定時任務
        /// </summary>
        public static void StartUp()
        {
            JobManager.Initialize(new ApiJobFactory());
        }

        /// <summary>
        /// 停止定時任務
        /// </summary>
        public static void Stop()
        {
            JobManager.Stop();
        }
    }

    /// <summary>
    /// 待處理的作業工廠,在構造函數中設置好各個Job的執行計劃。
    /// 參考【https://github.com/fluentscheduler/FluentScheduler】
    /// </summary>
    internal class ApiJobFactory : Registry
    {
        public ApiJobFactory()
        {
            // 立即執行每兩秒一次的計劃任務。(指定一個時間間隔運行,根據自己需求,可以是秒、分、時、天、月、年等。)
            Schedule<Demo>().ToRunNow().AndEvery(2).Seconds();

            // 延遲一個指定時間間隔執行一次計劃任務。(當然,這個間隔依然可以是秒、分、時、天、月、年等。)
            Schedule<Demo>().ToRunOnceIn(5).Seconds();

            // 在一個指定時間執行計劃任務(最常用。這裏是在每天的下午 1:10 分執行)
            Schedule(() => Trace.WriteLine("It‘s 1:10 PM now.")).ToRunEvery(1).Days().At(13, 10);

            // 立即執行一個在每月的星期一 3:00 的計劃任務(可以看出來這個一個比較復雜點的時間,它意思是它也能做到!)
            Schedule<Demo>().ToRunNow().AndEvery(1).Months().OnTheFirst(DayOfWeek.Monday).At(3, 0);

            // 在同一個計劃中執行兩個(多個)任務
            Schedule<Demo>().AndThen<Demo>().ToRunNow().AndEvery(5).Minutes();
        }
    }

    internal class Demo : IJob
    {
        void IJob.Execute()
        {
            Trace.WriteLine("開始定時任務了,現在時間是:" + DateTime.Now);
        }
    }
}

FluentScheduler定時器計劃任務