在業務複雜的應用程式中,有時候會要求乙個或者多個任務在一定的時間或者一定的時間間隔內計畫進行,比如定時備份或同步資料庫,定時傳送電子郵件等,我們稱之為計畫任務。實現計畫任務的方法也有很多,可以採用sqlagent執行儲存過程來實現,也可以採用windows任務排程程式來實現,也可以使用windows服務來完成我們的計畫任務,這些方法都是很好的解決方案。但是,對於web應用程式來說,這些方法實現起來並不是很簡單的,主機服務提供商或者不能直接提供這樣的服務,或者需要你支付許多額外的費用。 本文就介紹乙個直接在web應用程式中使用的簡單的方法,這個方法不需要任何額外的配置即可輕鬆實現。
乙個計畫任務的工作單元稱之為乙個任務(job),下面的**描述了對所有任務都可以被排程引擎計畫執行的乙個通用的介面,這裡的每個任務實現了execute方法,供排程引擎進行呼叫:
public inte***ce ischedulerjob
如前所述,我們的例子是實現往檔案寫如字元日期,下面就是實現這一任務的方法:
public class samplejob : ischedulerjob
//向檔案寫入內容
streamwriter x = new streamwriter(file_name,true,system.text.encoding.default);
if(flag) x.write("計畫任務測試開始:");
x.write("/r/n"+c);
x.close();}}
接下來,我們建立乙個配置物件,告訴排程引擎執行什麼任務和執行的時間間隔。
public class schedulerconfiguration
}public arraylist jobs }
//排程配置類的建構函式
public schedulerconfiguration(int newsleepinterval)
}下面就是排程引擎,定時執行配置物件的任務
public class scheduler
public void start()}}
}//定義執行緒變數
public system.threading.thread schedulerthread = null;
最後還需要在程式退出時進行銷毀:
}好了,在vs.net裡建立乙個c#的web應用程式工程,建立taskscheduler.cs類,並修改相應的global.asax.cs檔案。為了能看到效果,我們再建立乙個表單webform1.aspx,定時重新整理來檢查我們所記錄的資料:
<%@ page language="c#" codebehind="webform1.aspx.cs" autoeventwireup="false"
inherits="cstest.webform1" %>
對工程進行編譯並執行,就可以看到結果了,結果如下:
計畫任務測試開始:
2003-13-10 11:08:15
2003-13-10 11:08:18
2003-13-10 11:08:21
2003-13-10 11:08:24
2003-13-10 11:08:27
2003-13-10 11:08:30
需要說明的是,以上只是在web應用程式中執行計畫任務的簡單例子,對於多個任務來說,需要在不同的執行緒內進行工作,對計畫的安排也是很簡單的,實際還需要站點堵塞,當機的情況。另外這裡也沒有進行錯誤的處理等工作,相信大家會寫出更加完美的**的。
在Web應用程式中執行計畫任務(多執行緒)
對工程進行編譯並執行,就可以看到結果了,結果如下 計畫任務測試開始 2003 13 10 11 08 15 2003 13 10 11 08 18 2003 13 10 11 08 21 2003 13 10 11 08 24 2003 13 10 11 08 27 2003 13 10 11 08...
在Web應用程式中執行計畫任務(多執行緒)
在業務複雜的應用程式中,有時候會要求乙個或者多個任務在一定的時間或者一定的時間間隔內計畫進行,比如定時備份或同步資料庫,定時傳送電子郵件等,我們稱之為計畫任務。實現計畫任務的方法也有很多,可以採用sqlagent執行儲存過程來實現,也可以採用windows任務排程程式來實現,也可以使用windows...
在Web應用程式中執行計畫任務(多執行緒)
在 業務複雜的應用程式中,有時候會要求乙個或者多個任務在一定的時間或者一定的時間間隔內計畫進行,比如定時備份或同步資料庫,定時傳送電子郵件等,我們稱 之為計畫任務。實現計畫任務的方法也有很多,可以採用sqlagent執行儲存過程來實現,也可以採用windows任務排程程式來實現,也可以使用windo...