.NET 寫的定時器,定時觸發函數方法


在做一個項目的移動端手機接口的時候,需要在某一時刻向手機版定時推送數據。

下面講講實現方法:

 

1、在 Web.config 文件中的 sessionstate 模式設置為 InProc

 

2、在 Global.asax 文件中添加以下代碼

void Application_Start(object sender, EventArgs e)
{       //定時器 
        System.Timers.Timer myTimer = new System.Timers.Timer(1000);
        //表示ElapsedEventHandler要調用的方法
        myTimer.Elapsed += new System.Timers.ElapsedEventHandler(TaskTickAction.TickFunction);
        myTimer.Enabled = true;
        myTimer.AutoReset = true;
}

Application_Start 只有在網站訪問之后才會觸發.

 

    /// <summary>
    /// 服務器內部激發的事件處理函數,它是基於一個服務器內部的計時器 主要解決IIS應用程序池自動回收的問題
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    void Session_End(object sender, EventArgs e) 
    {//客戶端需要通過再一次Request 目的是要激發Application_Start
        string url = "http://" + HttpContext.Current.Request.Url.Authority+"/default.aspx";
        System.Net.HttpWebRequest myHttpWebRequest = (System.Net.HttpWebRequest)System.Net.WebRequest.Create(url);
        System.Net.HttpWebResponse myHttpWebResponse = (System.Net.HttpWebResponse)myHttpWebRequest.GetResponse();
        System.IO.Stream receiveStream = myHttpWebResponse.GetResponseStream();
    }

 

3、TaskTickAction  定時器要觸發的方法

 

public static class TaskTickAction
{
    /// <summary>
    /// 定時器調用的方法
    /// </summary>
    /// <param name="source"></param>
    /// <param name="e"></param>
    public static void TickFunction(object source, ElapsedEventArgs e)
    {
        DateTime mytime = DateTime.Now;
        if (DateTime.Now.ToString("HH:mm:ss") == "15:00:05") //這個時間點執行
        {
            //你要執行的東西
        }
    }
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM