C# web Application_Start 问题
我在Applicaition_Start中写了些代码,定时获取一些数据,获取一次数据后用Thread.Sleep停止一段时间,可是现在我发现如果我定制5分钟,就没问题,可...
我在Applicaition_Start中写了些代码,定时获取一些数据,获取一次数据后用Thread.Sleep 停止一段时间,可是现在我发现如果我定制5分钟,就没问题,可是如果停止时间长一些,就不行了,求解
展开
展开全部
Applicaition_Start只是在站点启动时,才会执行一次,而且启动的是属于IIS的线程,IIS的线程是随时都有可能被回收的
建议你开发一个WindowsService去获取数据,而不是通过Asp.net来实现
建议你开发一个WindowsService去获取数据,而不是通过Asp.net来实现
追问
知道服务能更好的解决,只是看到网上还有这种方法,想实验一下,能说下在什么情况下会被回收吗?
追答
这个,.net的GC回收,是无法确定什么时间,什么情况下进行回收
MSDN里说:
在大多数情况下,垃圾回收器可以确定执行回收的最佳时间,应让其独立运行。
垃圾回收器跟踪并回收托管内存中分配的对象。垃圾回收器定期执行垃圾回收以回收分配给没有有效引用的对象的内存。当使用可用内存不能满足内存请求时,垃圾回收会自动进行。
展开全部
1 你是新建一个线程并在其之上进行操作?
2 如果你是母页模板的话,可以利用iframe定时刷新获取数据
2 如果你是母页模板的话,可以利用iframe定时刷新获取数据
追问
新建了一个线程
没用iframe
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你可以使用 任务调度“Quartz”,这个东西是开源的,在.net中也有相应的DLL,使用比较简单。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
Applicaition_Start只是在站点启动时,如果你是想在网站上定时刷新数据,建议你用ajax+JS的定时去获取
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
干嘛用Thread.Sleep,干扰应用程序启动,如果时间长了的话HttpRuntime会直接收回控制权的
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
共同学习
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询