首页 > 代码库 > 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使用方法
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。