.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") //这个时间点执行 {
//你要执行的东西 } } }