ASP.NET MVC FluentSchedulerタイマを使用してタスクを計画

6791 ワード

FluentSchedulerとは何ですか?
Automated job scheduler with fluent interface.
これは著者がGithubで紹介したタイミングタスクマネージャです..Netの下で似たようなものはマイクロソフトのTimer、Quartz.NET、FluentScheduler、Windowsサービスなどがありますが、Quartz.NETの使用についてはJavaの下のQuartzとほとんど変わらないので、前に書いたことがあります Spring Quartzタスクスケジューリングタイマを使用するのはQuartzに関するものです.
タイミングタスクやジョブのスケジューリングは、統計、メール、または完了したいビジネスロジックを指定するときにのみ役立つ場合があります.これも目的です.
FluentSchedulerの使用方法
作者のGithubに行ってソースコードや例を見てみることをお勧めします.住所: https://github.com/fluentscheduler/FluentScheduler もちろん、ここでは著者の例を用いてプレゼンテーションと翻訳を行い、誰もが理解できることを保証しました.
一、FluentSchedulerパッケージをインストールしてパッケージ管理コンソールを開き、Install-Package FluentSchedulerを入力すればよい.手順:ステータスバー選択 ツール-ライブラリパッケージマネージャ-パッケージ管理コンソール、次の図に示します.Install-Package FluentSchedulerと入力します.
二、コードを書く私はここで簡単に作者のサンプルコードを貼って、もっとGithubに行って見ることをお勧めしますが、私は手当たり次第に翻訳して、もっと読みやすいかもしれません.
public class Demo : Registry
{
    public Demo()
    {
        // Schedule an IJob to run at an interval
        //               。(          ,      ,    、 、 、 、 、  。)
        Schedule().ToRunNow().AndEvery(2).Seconds();

        // Schedule an IJob to run once, delayed by a specific time interval
        //                   。(  ,          、 、 、 、 、  。)
        Schedule().ToRunOnceIn(5).Seconds();

        // Schedule a simple job to run at a specific time
        //              (   。          1:10    )
        Schedule(() => Trace.WriteLine("It's 1:10 PM now.")).ToRunEvery(1).Days().At(13, 10);

        Schedule(() => {

            //        。
            Trace.WriteLine("It's 1:10 PM now.");

        }).ToRunEvery(1).Days().At(13, 10);

        // Schedule a more complex action to run immediately and on an monthly interval
        //               3:00      (                 ,         !)
        Schedule().ToRunNow().AndEvery(1).Months().OnTheFirst(DayOfWeek.Monday).At(3, 0);

        // Schedule multiple jobs to be run in a single schedule
        //            (  )  
        Schedule().AndThen().ToRunNow().AndEvery(5).Minutes();

    }


}

public class MyJob : IJob
{

    void IJob.Execute()
    {
        Trace.WriteLine("     :"+DateTime.Now);
    }
}

public class MyOtherJob : IJob
{

    void IJob.Execute()
    {
        Trace.WriteLine("      Job ,     :" + DateTime.Now);
    }
}

public class MyComplexJob : IJob
{

    void IJob.Execute()
    {
        Trace.WriteLine("        Job ,     :" + DateTime.Now);
    }
}

三、初期化Global.asaxに文を加える
JobManager.Initialize(new Demo());

上は簡単な使用で、実はもう十分で、もちろんもっと変態の需要があって、作者もドキュメントの中で書いて、例えばこれ:あなたは計画の任務を実行して、毎週14:00に実行したいです.しかし、今は月曜日の午前10:00です.では、あなたのプログラムは今日実行しますか、それとも来週の月曜日に実行しますか.ここで使いました  ToRunEvery . コンカレントタスクの処理もあり、興味があれば行ってみてください.
まとめてみる
FluentSchedulerは.Netの下で、簡単にタイミングタスクを実現できるツールで、Windowsサービスを書く必要はありません.もっと重要なのは、時間設定が柔軟で、タイミングタスクの難点はそうではありません.
ようこそご本人QQ:1011435094