Web网站开后台线程,后台线程能一直运行到网站停止吗?
在Application_Start启动后台线程,N天没人访问网站的话,感觉后台线程会停掉....
如果后台线程真的会停掉有没什么好的解决办法?
后台线程的代码是类似于这样的,理论上是不可能停掉的:
C# code
public static void ThreadStart()
{
while (true)
{
Thread.Sleep(interval);
//.......
}
}
------解决方案--------------------可以用别的方式实现。。类似。。服务
------解决方案--------------------protected void Application_Start(Object sender, EventArgs e)
在这里面开线程
开线程的代码最好放在一个单例里,这样可以确保只开一个线程,
只要线程不出错,这个线程会一直继续下去啊,跟有没有人访问你的网站毫无关系的
------解决方案--------------------没做过,可以试一下
如果没人访问,运行也没意思吧?
------解决方案--------------------但是在后台开的这个线程,会在线程运行完成后自动关闭,就是如果他有事情做就会一直做,直到服务重启,
但是如果任务完成了,就会自动关闭线程了
------解决方案--------------------被停掉的原因是你这个IIS重启了
所以重启以后需要有一个人访问下你的站点,才会执行protected void Application_Start(Object sender, EventArgs e)
------解决方案--------------------那是你网站设置的问题,在IIS中把应用程序池设置成一段时间无请求不自动关闭.
------解决方案--------------------
------解决方案--------------------对 设置下IIS试试吧。
------解决方案--------------------学习...up
------解决方案--------------------lz的意思是不是用户开一个网页就打开一个线程,是不是这样啊
这样太恐怖了吧
------解决方案--------------------路过 UP
------解决方案--------------------貌似很耗性能滴。。。
------解决方案--------------------如果线程运行过程中出错,可能会造成线程终止
你可以在while(true)里面加上try catch试试
------解决方案--------------------
------解决方案--------------------IIS里面设置一下
------解决方案--------------------没有人访问20分钟IIS回收应用程序池,线程就没了。