Application_Start中的线程自动停止的问题

mohugomohu 2011-06-18 05:05:30

System.Timers.Timer myTimer = null;
IDataAccessor da = DataAccessorFactory.Instance.GetDataAccessor(DataAccessorFactory.AccessorType.SqlServer);
protected void Application_Start(object sender, EventArgs e)
{
if (myTimer == null)
{
myTimer = new System.Timers.Timer(1000 * 60 * 5);//5分钟读取一次
myTimer.Elapsed += new ElapsedEventHandler(Timer_Tick);
}
myTimer.Start();
}

protected void Application_End(object sender, EventArgs e)
{
StreamWriter sw = new StreamWriter(Server.MapPath("/testPhar.txt"), true);
sw.Write("程序结束了!" + DateTime.Now.ToString("yyyy-MM-dd HH:mm " + "\r\n"));

//解决应用池回收问题
System.Threading.Thread.Sleep(5000);
string strUrl = "http://www.huarenwl.com:8099";

System.Net.HttpWebRequest _HttpWebRequest = (System.Net.HttpWebRequest)System.Net.WebRequest.Create(strUrl);
System.Net.HttpWebResponse _HttpWebResponse = (System.Net.HttpWebResponse)_HttpWebRequest.GetResponse();
System.IO.Stream _Stream = _HttpWebResponse.GetResponseStream();//得到回写的字节流
}
private void Timer_Tick(object sender, EventArgs e)
{
GetTemperatureData("京AJ7981摄");
GetTemperatureData("京AJ7944摄");
}


我想在网站启动后就一直运行一段代码,就在Application_Start中使用了一个Timer,但是现在发现如果20-30分钟没人访问网站的话,这个线程就会停止了,然后我上网查找了一下,发现有人说是应用程序池回收造成的,然后我在Application_End里面弄了一个重新访问网站的代码,但是没效果,Application_End都不执行。大家帮我看看啊!
...全文
442 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
lemonay 2011-09-02
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 sp1234 的回复:]
不过这类问题首先应该想:这不是asp.net程序员该考虑的任务。
[/Quote]....这样的态度不对吧,我们的虽然关系到服务器缓冲池设定等其他边缘问题,但是并不是说这就是ASP.NET程序员份外的工作,做开发,如果对服务器的配置,系统服务等等都不懂,只在乎自己ASP.NET那几个字母以内的东东,我觉得你很悲哀。
mohugomohu 2011-06-18
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 sp1234 的回复:]

应用程序域被回收,这是强制的行为。如果一定要“保证重启”,那么你就弄一个远程客户端不断骚扰服务器,定时地去访问服务器就行了。
[/Quote]
定时地访问服务器,那我还不如定时读取数据。国产凌凌漆里面那个达文西的发明,拿手电筒去照手电筒
mohugomohu 2011-06-18
  • 打赏
  • 举报
回复
请问怎样才算“访问自己的网站”,_HttpWebResponse.GetResponseStream()这个算不算
winner2050 2011-06-18
  • 打赏
  • 举报
回复
默认情况下,20分钟没人访问网站,IIS 就回收了。

我的经验就是线程调度里面多个任务---自己访问自己的网站。
  • 打赏
  • 举报
回复
不过这类问题首先应该想:这不是asp.net程序员该考虑的任务。
  • 打赏
  • 举报
回复
应用程序域被回收,这是强制的行为。如果一定要“保证重启”,那么你就弄一个远程客户端不断骚扰服务器,定时地去访问服务器就行了。

62,041

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧