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

 

posted @ 2017-12-06 14:10  yopoyan  阅读(1499)  评论(0编辑  收藏  举报