webform中Global中使用定时器
Posted masonblog
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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 { }
}
}
}
}
以上是关于webform中Global中使用定时器的主要内容,如果未能解决你的问题,请参考以下文章
global文件中的application_start方法中做: 定时器
关于asp.net Global.asax 我在 Application_Start有个定时器、每5分钟执行一次、一段时间后不执行了。