概念大致上曉得,只是一直沒時間去實作出來
這幾天有些時間就去翻了一下資料,把它實作出來
坎尼在以前公司的做法有下列幾個:
不多說,馬上進入正題
I. 概念
排程這個東西,就是指定好時間,時間一到程式就會自動去執行在 ASP.NET 裡,坎尼主要是利用 System.Thread.Timer 來進行排程設定
其他說明可詳見Bill叔所寫的 <三種時間人>
接著在 Timer callback 事件中撰寫要系統做的事
II.實作
首先,新增一個 Web 專案 (似乎是廢話)在專案中新增一個 Global.asax 檔
接著宣告一個全域的 Timer
並在 Application_Start 中加入要進行 callback 的事件
最後再設定 Timer 的週期,本範例中是以 5 秒當作一個循環 (50000毫秒)
(第3個參數為 Timer 要在多少毫秒之後啟動事件
範例中所做的事就只是把時間寫進一個文字檔
(由於 sample 沒做好處理,很容易當掉 XD
進行測試,在 Visual Studio 中按 F5 (讓虛擬伺服器啟動)
注意,由於是另外開個 Thread
所以在伺服器關掉之前都會持續進行 callback事件
測試結果,果然有成功的在 background 進行寫時間 log 的動作
III. 小結
本次的範例下載有興趣的人可以回去研究如何應用 :p
7 則留言:
最後再設定 Timer 的週期,本範例中是以 5 秒當作一個循環 (50000毫秒) --> 應該是 5000 毫秒
沒想到愚人節要騙騙大家,看有沒有注意圖文是否一致~結果還是被 Tim 發現了~
好啦~ 是我手滑多按一個0...
不小心查資料的時候路過看到這一篇文章
給你個建議,如果要設定排程可以使用
quartz.net
謝謝大大的好文
剛好有需要寫排程去定期執行function
這篇幫助我很大,感恩!
請問這樣寫出來的程式,最後是一個執行檔?
假設沒有設定停止時間的話,執行後會一直再背景啟動中,這樣嗎?
Hi, Alen Wu
文中範例是以網站為基礎,並不是執行檔,而且會在網站啟動的時候便會開始執行
沒有設定停止條件的話是會一直執行,所以撰寫相關routine工作的程式碼時,要特別注意記憶體釋放相關問題
若要開發相關背景執行服務也可以參考上面回覆的 quartz.net
謝謝您的回覆,真是受益良多~^^
張貼留言