webform中Global中使用定时器

2021-03-20 10:29

阅读:643

标签:逻辑   好的   start   资源   font   bsp   单位   new   时间   

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中使用定时器

标签:逻辑   好的   start   资源   font   bsp   单位   new   时间   

原文地址:https://www.cnblogs.com/masonblog/p/12740534.html


评论


亲,登录后才可以留言!