日期:2014-05-19  浏览次数:20470 次

请教asp.net程序的定时运行问题(分不够会另开新帖加)
尝试了下面的方法:
在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时,发现时间不是很准确(误差有时达到了十多秒),这是什么原因?除了上面的方法和在客户端定时访问某个页面,还有什么其它可用的办法吗?

谢谢。
回复者有分,不够再加:)

------解决方案--------------------
好像除了Application中Timer,还没有别的办法。
------解决方案--------------------
你在服务器写个windows services试试。
------解决方案--------------------
不再工作是这样的。.net如果常时间没有人访问,应用程序就会停止的。
你可以在线程里加一个访问站点下一个简单页面的功能,让它定时访问页面,间隔不要太长,如HttpWebrequest方法。这样就能保证不停止
------解决方案--------------------
重新启动应用应用程序用不着“重启IIS或者站点的动作”,很多条件下都会重启。

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

web应用自己“定时运行”?这个要求相当勉强。
------解决方案--------------------
还有一个简单方法
建议楼主把

向数据库写入一个时间戳

做成一个命令行程序

然后定时运行这种事情,就交给windows的任务管理器去做吧
「开始」菜单\程序\附件\系统工具\任务计划。 向导操作界面,楼主把程序配在里面也就ok了!
------解决方案--------------------
计划任务吧