请教asp.net程序的定时运行问题(分不够会另开新帖加)

geodetic 2007-04-10 06:17:02
尝试了下面的方法:
在Application中定义类成员System.Timers.Timer/System.Threading.Timer,并在Application_Start中实例化;
aspx页面中new Thread(new ThreadStart(WorkFunction)),WorkFunction中死循环,完成工作后Thread.Sleep一段时间;

以上方法全部试过,很奇怪的是过一段时间后WorkFunction中的代码就不再工作(调试方法是每隔5分钟向数据库写入一个时间戳,调试过程中肯定没有过重启IIS或者站点的动作;调试环境是win2003,IIS6.0,asp.net 2.0,换了3部机器都有同样的问题),而且使用那两种Timer时,发现时间不是很准确(误差有时达到了十多秒),这是什么原因?除了上面的方法和在客户端定时访问某个页面,还有什么其它可用的办法吗?

谢谢。
回复者有分,不够再加:)
...全文
424 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
doggod2008 2007-04-11
  • 打赏
  • 举报
回复
计划任务吧
geodetic 2007-04-11
  • 打赏
  • 举报
回复
因为部署机器由第三方管理,所以设立windows service或者计划任务都不可行。
谢谢楼上两位。
Karl_He 2007-04-10
  • 打赏
  • 举报
回复
还有一个简单方法
建议楼主把

向数据库写入一个时间戳

做成一个命令行程序

然后定时运行这种事情,就交给windows的任务管理器去做吧
「开始」菜单\程序\附件\系统工具\任务计划。 向导操作界面,楼主把程序配在里面也就ok了!
geodetic 2007-04-10
  • 打赏
  • 举报
回复
感谢孟子兄提供的解决方案
测了一个多小时了,没有问题:)

再请教一下为什么“.net如果常时间没有人访问,应用程序就会停止的”?能否推荐些.net如何管理它上面的应用程序域的文章看看,谢谢。
还有孟子兄为什么推荐System.Threading.Thread而不是System.Threading.Timer?为什么前者的可靠性和性能更好?
  • 打赏
  • 举报
回复
重新启动应用应用程序用不着“重启IIS或者站点的动作”,很多条件下都会重启。

在不同的web服务器上,应用程序会以不同间隔时间被重新启动,这是web服务的比较通行的一种维护措施。在繁忙的web服务器上,你可以假设你的应用程序平均10分钟就被重新启动一次。

web应用自己“定时运行”?这个要求相当勉强。
孟子E章 2007-04-10
  • 打赏
  • 举报
回复
可参考
http://dotnet.aspx.cc/Web/WebApplication1.zip
加入访问站点代码即可
孟子E章 2007-04-10
  • 打赏
  • 举报
回复
考虑使用 System.Threading.Thread
孟子E章 2007-04-10
  • 打赏
  • 举报
回复
不再工作是这样的。.net如果常时间没有人访问,应用程序就会停止的。
你可以在线程里加一个访问站点下一个简单页面的功能,让它定时访问页面,间隔不要太长,如HttpWebrequest方法。这样就能保证不停止
MarcuseXiao 2007-04-10
  • 打赏
  • 举报
回复
你在服务器写个windows services试试。
gui0605 2007-04-10
  • 打赏
  • 举报
回复
这个就不知道了
mapserver 2007-04-10
  • 打赏
  • 举报
回复
好像除了Application中Timer,还没有别的办法。

62,046

社区成员

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

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

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

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