西西軟件園多重安全檢測下載網(wǎng)站、值得信賴的軟件下載站!
軟件
軟件
文章
搜索

首頁編程開發(fā)C#.NET → 不需要配置文件就可以使用Quartz.NET的方法

不需要配置文件就可以使用Quartz.NET的方法

相關軟件相關文章發(fā)表評論 來源:西西整理時間:2011/4/4 22:49:19字體大。A-A+

作者:佚名點擊:432次評論:3次標簽: winform

  • 類型:編程輔助大。3.3M語言:中文 評分:4.4
  • 標簽:
立即下載

寫博客寫上癮了,怎么辦?

本來沒打算寫這篇隨筆,但是今天突然解決了Quartz.NET的一個問題,實在想分享一下。網(wǎng)上搜索到的一堆Quartz.NET文章,都是談如何通過配置文件來使用Quartz.NET。

我們只是想簡單使用一下,取代原來在Windows中使用的任務計劃,每天定時發(fā)兩封提醒郵件,實在不想在一堆配置中掙扎。

先簡單介紹一下Quartz.NET:

Quartz.NET是一個開源的作業(yè)調度框架,是 OpenSymphony 的 Quartz API 的.NET移植,它用C#寫成,可用于winform和asp.net應用中。它提供了巨大的靈活性而不犧牲簡單性。你能夠用它來為執(zhí)行一個作業(yè)而創(chuàng)建簡單的或復雜的調度。它有很多特征,如:數(shù)據(jù)庫支持,集群,插件,支持cron-like表達式等等。

以上簡介內容引用自leeolevis寫的“Quartz.NET作業(yè)調度框架詳解”。

下面我們用幾行代碼搞定它。

1. 定義要執(zhí)行的任務(實現(xiàn)Quartz.IJob接口),代碼如下:


public class ShiftNotify : IJob
{
public void Execute(JobExecutionContext context)
{
//在此執(zhí)行計劃任務
//比如:“時間不早了,該起床啦!”
}
}

2. 將要計劃執(zhí)行的任務加入到調度器中。

完成這一步,需要三樣東西:調度器(IScheduler)、任務(JobDetail)、觸發(fā)器(Trigger)。

由于是在Web應用程序中進行調度,代碼需要寫在Global.asax.cs的Application_Start()方法中。

a) 創(chuàng)建一個調度器(職責:如果觸發(fā)器設定的條件滿足,就讓預先定義好的任務干活):
ISchedulerFactory factory = new StdSchedulerFactory();
IScheduler scheduler = factory.GetScheduler();
scheduler.Start();

b) 創(chuàng)建一個任務(第1步已經(jīng)定義好的任務,真正干活的):


JobDetail job = new JobDetail("MyJob", typeof(ShiftNotify));

c) 創(chuàng)建一個觸發(fā)器(從什么時間開始,多長時間觸發(fā)一次):
Trigger trigger = TriggerUtils.MakeMinutelyTrigger(1);
trigger.StartTimeUtc = TriggerUtils.GetEvenMinuteDate(DateTime.UtcNow);
trigger.Name = "ShiftNotify";

第一行代碼設置的是1分鐘觸發(fā)一次。

第二行代碼設置的是開始時間。之前遇到的問題就出現(xiàn)在這里。將DateTime.UtcNow寫成了DateTime.Now,怎么也觸發(fā)不了。

d) 將任務與觸發(fā)器添加到調度器中:


scheduler.ScheduleJob(job, trigger);

好了,完工!

不需要任何配置文件,Quartz.NET就按你的指令,定時為你服務了。

    相關評論

    閱讀本文后您有什么感想? 已有人給出評價!

    • 8 喜歡喜歡
    • 3 頂
    • 1 難過難過
    • 5 囧
    • 3 圍觀圍觀
    • 2 無聊無聊

    熱門評論

    最新評論

    發(fā)表評論 查看所有評論(3)

    昵稱:
    表情: 高興 可 汗 我不要 害羞 好 下下下 送花 屎 親親
    字數(shù): 0/500 (您的評論需要經(jīng)過審核才能顯示)