在Web應用程式中執行計劃任務(多執行緒) (轉)
在業務複雜的應用程式中,有時候會要求一個或者多個任務在一定的時間或者一定的時間間隔內計劃進行,比如定時或同步,定時傳送電子等,我們稱之為計劃任務。實現計劃任務的方法也有很多,可以採用Agent執行過程來實現,也可以採用任務排程程式來實現,也可以使用Windows服務來完成我們的計劃任務,這些方法都是很好的解決方案。但是,對於Web應用程式來說,這些方法實現起來並不是很簡單的,主機服務提供商或者不能直接提供這樣的服務,或者需要你支付許多額外的費用。 本文就介紹一個直接在Web應用程式中使用的簡單的方法,這個方法不需要任何額外的即可輕鬆實現。
由於.NET站點是作為Web應用程式執行的,它並不受執行緒的限制,因此我們可以非常方便地在Application_Start和Application_End事件中建立和銷燬一個計劃任務。下面就簡單介紹一下在Web站點實現計劃任務的方法。我們的例子是定時往裡新增資訊,作為例子,這裡把當前的時間定時地寫入檔案中。
一個計劃任務的工作單元稱之為一個任務(Job),下面的程式碼描述了對所有任務都可以被排程引擎計劃執行的一個通用的介面,這裡的每個任務實現了Execute方法,供排程引擎進行:
如前所述,我們的例子是實現往檔案寫如字元日期,下面就是實現這一任務的方法:
接下來,我們建立一個配置,告訴排程引擎執行什麼任務和執行的時間間隔。
下面就是排程引擎,定時執行配置物件的任務
所有的準備工作已經完成,下面就是啟用引擎的工作了。為了讓我們的任務計劃執行,我們在Global.asax.cs檔案裡的Applicatio_Start和Application_End裡進行建立和銷燬工作,首先建立一個排程程式執行的執行緒,我們這裡的執行間隔時間為3秒鐘。
最後還需要在程式退出時進行銷燬:
好了,在VS.NET裡建立一個的Web應用程式工程,建立TaskScheduler.cs類,並修改相應的Global.asax.cs檔案。為了能看到效果,我們再建立一個表單WebForm1.,定時重新整理來檢查我們所記錄的資料:
對工程進行編譯並執行,就可以看到結果了,結果如下:
需要說明的是,以上只是在Web應用程式中執行計劃任務的簡單例子,對於多個任務來說,需要在不同的執行緒內進行工作,對計劃的安排也是很簡單的,實際還需要站點堵塞,當機的情況。另外這裡也沒有進行錯誤的處理等工作,相信大家會寫出更加完美的程式碼的。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752019/viewspace-984556/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Java多執行緒——獲取多個執行緒任務執行完的時間Java執行緒
- .NET多執行緒程式設計(3):執行緒同步 (轉)執行緒程式設計
- .NET多執行緒程式設計(1):多工和多執行緒 (轉)執行緒程式設計
- 多執行緒程式設計(轉)執行緒程式設計
- php:多程式執行任務PHP
- Swift多執行緒:使用Thread進行多執行緒間通訊,協調子執行緒任務Swift執行緒thread
- 利用SSIS在SQL Azure中執行計劃任務(下)KCSQL
- 利用SSIS在SQL Azure中執行計劃任務(上)DJSQL
- PyQt應用程式中的多執行緒:使用Qt還是Python執行緒?QT執行緒Python
- linux中計劃任務執行指令碼Linux指令碼
- 程式設計思想之多執行緒與多程式(3):Java 中的多執行緒程式設計執行緒Java
- 多執行緒------執行緒與程式/執行緒排程/建立執行緒執行緒
- 編輯計劃任務並執行
- [短文速讀 -5] 多執行緒程式設計引子:程式、執行緒、執行緒安全執行緒程式設計
- iOS中多執行緒之GCD應用iOS執行緒GC
- Linux下應用程式開發:QT中的多執行緒程式設計(轉)LinuxQT執行緒程式設計
- pytest(13)-多執行緒、多程式執行用例執行緒
- 程式設計思想之多執行緒與多程式(4):C++ 中的多執行緒程式設計執行緒C++
- .NET多執行緒程式設計(4):執行緒池和非同步程式設計 (轉)執行緒程式設計非同步
- 多執行緒-定時任務的多次執行程式碼體現執行緒行程
- Java程式中的多執行緒(1)(轉)Java執行緒
- Java程式中的多執行緒(2)(轉)Java執行緒
- 多執行緒程式設計執行緒程式設計
- ObjC 多執行緒簡析(一)-多執行緒簡述和執行緒鎖的基本應用OBJ執行緒
- 多執行緒程式設計,處理多執行緒的併發問題(執行緒池)執行緒程式設計
- 使用執行緒池優化多執行緒程式設計執行緒優化程式設計
- iOS多執行緒程式設計:執行緒同步總結iOS執行緒程式設計
- pytest多程式/多執行緒執行測試用例執行緒
- C#多執行緒(13):任務基礎①C#執行緒
- C#多執行緒(14):任務基礎②C#執行緒
- C#多執行緒(15):任務基礎③C#執行緒
- 批量任務體現多執行緒的威力!執行緒
- OpenMP 中的執行緒任務排程執行緒
- 多執行緒-程式和執行緒的概述執行緒
- 執行緒以及多執行緒,多程式的選擇執行緒
- 多執行緒,多程式執行緒
- Java 程式中的多執行緒Java執行緒
- 多執行緒程式設計基礎(一)-- 執行緒的使用執行緒程式設計