定時間點執行任務的asp.net簡易解決辦法

iDotNetSpace發表於2009-12-07

這裡的定時間點執行任務,指的是每天的某個時間執行一項任務。

比如每天凌晨七點的時候email傳送一次報表。

這裡首先想到的就是利用 Global.asax 檔案來實現, 以下Global檔案的內容。

 

<!--Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/--&gt@ Application Language="C#" %>
@ Import Namespace="System.Threading" %>

<script runat="server">

    
//這裡使用靜態保持對這處Timer例項的引用,以免GC
    private static System.Threading.Timer timer = null;

    
protected void Application_Start(object sender, EventArgs e) {
        
//計算現在到目標時間要過的時間段。
        DateTime LuckTime = DateTime.Now.Date.Add(new TimeSpan(7, 0, 0));
        TimeSpan span 
= LuckTime - DateTime.Now;
        
if (span < TimeSpan.Zero) {
            span 
= LuckTime.AddDays(1d) - DateTime.Now;
        }
        
//按需傳遞的狀態或者物件。
        object state = new object();
        
//定義計時器
        timer = new System.Threading.Timer(
            
new TimerCallback(CertainTask), state,
            span
, TimeSpan.FromTicks(TimeSpan.TicksPerDay));
    }

    
protected void Application_End(object sender, EventArgs e) {
        
//結束時記得釋放
        if (timer != null) { timer.Dispose(); }
    }

    
//這裡是指定時間執行的程式碼,必須是靜態的。
    private static void CertainTask(object state) {
        
//這裡寫你的任務邏輯
    }

script>

 

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/12639172/viewspace-621844/,如需轉載,請註明出處,否則將追究法律責任。

相關文章