webform中Global中使用定时器

2019-08-23 这个方法未经上线测试,记得以前测试时这个定时器在运行一段时间后就会停止,原因是IIS应用程序池的回收机制,IIS应用程序运行一段时间后如果没有数据的交互IIS会将资源回收,也就导致定时器停止运行。   1、不建议使用Timer,单独的使用Timer 效果是不理想的, Timer 使用前提是 必须在时间段内有人访问或请求网站才行,如果长时间没人访问网站或者超出定时时间段就不起作用(因为IIS的线程回收机制)。 好的方式是采用线程的方式。 sleep(time)的方式!! 当程序发布后,只要你第一次访问页面,激活线程,然后Thread.Sleep(time) 定时就可以了,当然截止到你iis重启或停止。   2、实例   Thread TempHumiRecordTh; int TimeTempHumiRecord = 30;   private void ThreadTempHumiRecord() { try { TimeTempHumiRecord = int.Parse(Utility.GetAppSetting(“Access_GetTempHumiRecord”)); //如果时间小于=0 则不跑 if (TimeTempHumiRecord > 0) { TempHumiRecordTh = new Thread(GetTempHumiRecord); TempHumiRecordTh.IsBackground = true;//设为 后台线程 TempHumiRecordTh.Start(); } } catch { } } private void GetTempHumiRecord() { try { //要循环执行的逻辑过程 while (true) { Utility.GetTempHumiRecordDataByAccess();   Thread.Sleep(1000 * TimeTempHumiRecord);//根据指定时间刷新(单位:毫秒) } } catch (Exception ex) { if (!ex.Message.Equals(“正在中止线程。”)) { if (TempHumiRecordTh != null) { try { TempHumiRecordTh.Abort(); } catch { } } } } }