日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

Quartz.NET 架构与源代码分析系列 part 2 :Job 作业

發布時間:2024/9/5 asp.net 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Quartz.NET 架构与源代码分析系列 part 2 :Job 作业 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

????? 在上一篇Quartz.NET 架構與源代碼分析系列 part 1 :Quartz.NET 入門我們介紹了Quartz.NET 的基本知識和簡單的應用,可以看出來它的使用是非常簡單的,只要短短的幾行代碼就可以在自己的應用程序嵌入強大的作業調度功能。圖1是調度器的原理示意圖。

圖1 調度器的原理示意圖

?

????? 從圖1可以看出,作業流程是在調度器的統一調度下完成的,它可以調度多個作業,觸發器提供作業執行的條件(每天 8:00 am),觸發器與作業關聯,它們是 1:N 的關系,1個觸發器可以關聯1個或多個作業。

附帶的作業

????? 我們知道要實現自己的作業功能只要繼承 IJob 接口并實現 Execute(JobExecutionContext context) 方法,再把它添加到調度器,調度器會調用執行Execute(JobExecutionContext context) 方法。調用期間,調度器會跟蹤作業和它們的執行次數。Quartz.NET 默認提供了 FileScanJob 監視某個文件是否被修改,NativeJob 執行指定程序,NoOpJob 空操作用來給系統調用 ITriggerListener 、IJobListener ,以及 SendMailJob 郵件發送作業。

作業執行上下文

????? 作業執行上下文由 JobExecutionContext 類實現,它的類圖如圖2所示。


圖2 JobExecutionContext 類圖?


圖3 JobDataMap 繼承圖

????? 它有一個存儲作業執行時數據的重要屬性:MergedJobDataMap,它是 JobDataMap 類型,也可以使用 JobExecutionContext.JobDetail.JobDataMap 來獲得 JobDataMap 對象的引用。作為傳遞參數的容器,JobDataMap 間接繼承了 DirtyFlagMap,DirtyFlagMap 內嵌了 Hashtable 容器,它有一組數據讀寫方法。可以使用 Visual Studio 的類圖來查看。

有狀態與無狀態的作業

????? 以上我們的作業實例都是從 IJob 繼承,Quartz.NET 里還有 IStatefulJob 、IInterruptableJob,它的聲明方式為:

Code
public?interface?IStatefulJob?:?IJob?
????{?
????}

public?interface?IInterruptableJob?:?IJob?
????{?
????????
void?Interrupt();?
????}

????? IInterruptableJob 接口提供了一個中斷方法,但是 IStatefulJob 沒有自己的方法。從 Quartz.NET 官方了解到:

一個 Job 實例可以被定義為“有狀態的”或者“無狀態的”。在執行無狀態的任務過程中任何對 JobDataMap 所作的更改都將丟失。有狀態的任務恰好相反,它在任務的每次執行之后重新存儲 JobDataMap 。有狀態任務的一個缺點就是它不能并發執行。也就是說,如果任務有狀態,那么當觸發器試圖觸發它,觸發器就會被阻塞直到前面的執行完成。想使任務有狀態,它就要實現 IStatefulJob 接口而不是實現IJob接口。

????? 從上面可以知道 IStatefulJob 應該有管理 JobDataMap 的方法,但這個接口在 Quartz.NET 1.0 版本還沒有實現。預計在以后的版本應該會加強這個功能的。

示例效果

圖4 Quartz.NET 示例圖

????? 該示例還不夠完善,所以源代碼沒有傳上來,計劃在下一篇就共享出來。

????? 下一篇文章我們將進入第3 部分:Trigger 觸發器

?

參考文章

1.The Official Quartz.NET Tutorial

2.Quartz.net官方開發指南 第三課:更多關于Jobs和JobDetails

?

目錄:?? Quartz.NET 架構與源代碼分析系列

上一篇:Quartz.NET 架構與源代碼分析系列 part 1 :Quartz.NET 入門

下一篇:Quartz.NET 架構與源代碼分析系列 part 3 :Trigger 觸發器

轉載于:https://www.cnblogs.com/Doho/archive/2009/03/12/1410081.html

總結

以上是生活随笔為你收集整理的Quartz.NET 架构与源代码分析系列 part 2 :Job 作业的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。