在做一個項目的移動端手機接口的時候,需要在某一時刻向手機版定時推送數據。
下面講講實現方法:
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") //這個時間點執行 {
//你要執行的東西 } } }