跳到主要內容

Quartz.net 升級測試

因為工作的關係,有個程式功能需要透過一個穩定排程工具進行處理,評估之後選擇了Quartz.Net

我是透過.net 的NuGet套件進行下載安裝,這個版本(V3.0.6)必須使用.net 4.5.2之後的版本



進到程式裡面,開發環境的設定初始化,建立ScheduleFactory、Scheduler

這部份需建立兩個全域的物件,StdSchedulerFactory與Scheduler



建立工作及觸發器


由於筆者是在windows form專案,因此在Form_Load階段必須建立工作流程

在TestAsyncJob裡面

建立了 IJobDetail類別job,並註冊CsCountJob(自定的工作執行器)
建立ITrigger  trigger工作觸發器

Trigger的觸發方式有蠻多的,例如
WithSimpleSchedule、WithDailyTimeIntervalSchedule、WithCronSchedule及WithCalendarIntervalSchedule

這次專案是使用WithDailyTimeIntervalSchedule,並設定每5秒進行一次trigger

完成Job與Trigger 的宣告後,再加入到Scheduler的工作排程


創建工作實體物件
CsCountJob是由IJobDetail所註冊的工作實體, 用來執行所排定的工作內容,實作IJob介面

Execute method,是實作IJob的工作執行方法,可以放置要進行執行的工作區段

目前Execute內部是用來處理Udp通訊封包的資料接收,並即時回饋至UI。

JobDataMap物件是由IJobDetail所定義的參數容器,主要是用來傳遞工作執行所需要的參數資訊。

另外在工作實體的宣告,在工作類別會使用DisallowConcurrentExecution進行過濾,主因是工作排程是每5秒一次,但若單次的工作執行階段會超過Trigger的秒數時間,為避免排程出現干擾的狀況,必須在類別宣告[DisallowConcurrentExecution],若當次排程尚未完成,則在trigger後的工作執行緒,將不允許執行。


Quartz.net在V3.0以後,會整合很多非同步執行的操作,因此像在TestAsyncJob Method的部份會使用async Task進行宣告



留言

這個網誌中的熱門文章

asp.net core 整合 bootstrap 第三方套件 AdminLTE

過去開發asp.net、asp.net mvc,曾經透過layout 或是 masterpage 設定bootstrap的RWD 模板,並且調用其他非官方的plugin 進行開發測試 同樣 asp.net core 的開發上,將來也會有相同的需求,因此也是透過之前使用的AdminLTE進行開發,這在官網也有最新版本的範本demo https://adminlte.io/themes/dev/AdminLTE/index.html 一、下載AdminLTE 筆者在開發上,所使用的是如圖中這兩個版本 二、建立Asp.Net Core 專案 首先透過命令列,在專案資料夾建立一個Asp.Net Core的MVC專案 D:\ASpNetCoreMvc1\dotnet new mvc 三、Asp.Net Core 檔案配置 接著依據AdminLTE-master 的架構,進行靜態檔案的配置 在asp.net core 的靜態檔案架構上,跟過去在asp.net 的方法也有很大的變革,這個必須配置在wwwroot的資料夾,所以筆者將套件包的檔案下載後,直接複製到 wwwroot 進行設定 內部有些檔案是我自己另外寫的,但大致結構仍以RWD為主的配置。另外如果靜態檔案未配置於wwwroot資料夾,網頁執行後將無法執行css及js 四、進行Layout檔案配置更新 回歸到版面配置重點,在 _Layout 的靜態檔案版面配置方式,其實與asp.net 沒有太大的改變 @RenderBody() 這裡是版面內要處理的部份 五、執行網頁

鹽水小鎮風光

連假拍很多花花草草

最近很多人家種雞蛋花,剛好是開花季節 附近還是可以找到傳統三合院,橫樑有鳳頭 公園的斑鳩 一處舊民宅旁邊開的花叢 黃金樹的花季,這時候已經接近尾聲了 偶爾會看到金露花叢,我比較喜歡拍澄色果實 仁武舊糖鐵遺跡,很久以前我拍過一次 仁武高中圍牆邊的一棵樹也在開花 這邊一戶民宅,看到圍牆的質感,可以推斷已經很有歷史了 這邊是早上對焦不好拍壞掉,中午經過又重拍一次