首页 > 代码库 > Timer使用方法

Timer使用方法

Timer的局限性:一般用于短间隔的重复任务,如果你的任务是以天、月、年等为间隔,Timer误差较大。

Timer成功使用方法:

 

1、在Global.asax中写入

 1 protected void Application_Start() 2         { 3              4             //启动定时器 5             MyTimer.GetTimerStart(); 6         } 7  8         protected void Application_End(object sender, EventArgs e) 9         {10             //下面的代码是关键,可解决IIS应用程序池自动回收的问题11             System.Threading.Thread.Sleep(1000);12             //触发事件, 写入提示信息           13             //这里设置你的web地址,可以随便指向你的任意一个aspx页面甚至不存在的页面,目的是要激发Application_Start14             //使用您自己的URL15             string url = "http://localhost:3813";16             System.Net.HttpWebRequest myHttpWebRequest = (System.Net.HttpWebRequest)System.Net.WebRequest.Create(url);17             System.Net.HttpWebResponse myHttpWebResponse = (System.Net.HttpWebResponse)myHttpWebRequest.GetResponse();18             System.IO.Stream receiveStream = myHttpWebResponse.GetResponseStream();//得到回写的字节流19 20             // 在会话结束时运行的代码。21             // 注意: 只有在 Web.config 文件中的 sessionstate 模式设置为 InProc 时,才会引发 Session_End 事件。22             // 如果会话模式设置为 StateServer23             // 或 SQLServer,则不会引发该事件。24         }

解决IIS自动回收进程的办法就是:进程回收时,Global.asax 中的 protected void Application_End 会自动执行,这时让程序随便访问一个网页,进程就会被激活。

2、是一个自己写一个类 MyTimer ,里面包含定时任务:

namespace JHABB.common{    public static class MyTimer    {        private static Timer mytimer = new Timer();        /// <summary>        /// 定义Timer        /// </summary>        public static void GetTimerStart()        {            // 循环间隔时间(30s),单位:毫秒            mytimer.Interval = 30000;            // 允许Timer执行            mytimer.Enabled = true;            //回调            mytimer.Elapsed += new ElapsedEventHandler(mytimer_Elapsed);        //mytimer.Elapsed +=mytimer_Elapsed  这样也可以            //多次循环            mytimer.AutoReset=true;        }        /// <summary>        /// Timer执行的操作        /// </summary>        /// <param name="sender"></param>        /// <param name="e"></param>        private static void mytimer_Elapsed(object sender, ElapsedEventArgs e)        {            //具体的定时任务        }    }}

 

Timer使用方法