1、在Global.asax文件中 的 Application_Start 中定义一个线程 void Application_Start(object sender, EventArgs e) { // 在应用程序启动时运行的代码//定义一个线程 System.Threading.Thread LoadServiceData = new System.Threading.Thread(new System.Threading.ThreadStart(LoadFromWebservice)); LoadServiceData.Start(); } 2、线程中调用的方法 private void LoadFromWebservice() { 3、定时器Handler函数,其中写业务代码 void Wtimer_Elapsed(object sender, System.Timers.ElapsedEventArgs e) { // 得到 hour minute second 如果等于某个值就开始执行某个程序。 int intHour = e.SignalTime.Hour; int intMinute = e.SignalTime.Minute; int intSecond = e.SignalTime.Second; // 定制时间; 比如 在10:30 :00 的时候执行某个函数 int iHour = 10; int iMinute =30; int iSecond = 00; // 设置 每天的10:30:00开始执行程序 if (intHour == iHour && intMinute == iMinute && intSecond == iSecond) { BLL.GetWebServiceData getdata = new GetWebServiceData(); getdata.AddSolid("2014-02-01"); } } 4、只要在使用 Timer,就必须保留对它的引用。对于任何托管对象,如果没有对 Timer 的引用,计时器会被垃圾回收。即使 Timer 仍处在活动状态,也会被回收。下面的代码是关键,可解决IIS应用程序池自动回收的问题 void Application_End(object sender, EventArgs e) { System.Threading.Thread.Sleep(1000); //这里设置你的web地址,可以随便指向你的任意一个aspx页面甚至不存在的页面,目的是要激发Application_Start System.Net.HttpWebRequest __HttpWebRequest = (System.Net.HttpWebRequest)System.Net.WebRequest.Create(RequestURL); 参考: http://blog.sina.com.cn/s/blog_69e8baad0100x8zl http://blog.sina.com.cn/s/blog_4f52c70d0100oywo.html |
|