怎么实现定时处理数据?

ouyang4683 2015-08-28 09:38:45
VS2012 + IIS6
在Application_Start 里 使用timer,
1.IIS7 的预热 ,没法用,服务器只有IIS6
2.Application_Start一定要有访问,才会触发,对于一个访问量不大的网站,这种情况不能接受
3.改写成window service也试了,调试异常超级不方便。。。



想问问

网站 上的定时处理 有没有其它 方法?
或是 怎么才能 先触发Application_Start?
怎么才能 保证 timer
...全文
333 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
likevs 2015-08-31
  • 打赏
  • 举报
回复
引用 7 楼 ouyang4683 的回复:
[quote=引用 5 楼 insus 的回复:] try this: http://www.cnblogs.com/insus/p/3658752.html
老师,这个看过,但触发,还是要手动触发 ?[/quote] 首次触发放到Application_Start里 他这是利用程序关闭前,会掉用Application_End事件,自己访问自己,自己再次被激活
likevs 2015-08-31
  • 打赏
  • 举报
回复
引用 5 楼 insus 的回复:
try this: http://www.cnblogs.com/insus/p/3658752.html
看了下这文章,这思路不错,配合Application_Start首次触发,完美,感觉是永动机啊,不过不是很明白,当前线程要暂停1秒?目地是什么?
myhope88 2015-08-31
  • 打赏
  • 举报
回复
如果逻辑不复杂的话,直接用sql server的定时程序也行
smthgdin_020 2015-08-31
  • 打赏
  • 举报
回复
1.可以改成winform或者控制台程序; 2.就算是windowsservi,也可以通过设置项目的命令参数,用控制台的方式来运行,这样调试就不麻烦了。
ice_baili 2015-08-31
  • 打赏
  • 举报
回复
我写了一个windows服务,生成的exe文件后,放到控制面板的计划任务里去执行了。
  • 打赏
  • 举报
回复
想编写服务端的自动化运行维护的程序,就从现在开始,编写服务器端静默运行、无界面的程序。从想再开始,把什么asp.net、winform、wpf 都忘掉。
  • 打赏
  • 举报
回复
引用 楼主 ouyang4683 的回复:
3.改写成window service也试了,调试异常超级不方便。。。
其实不管是windows计划任务所需要的控制台程序,还是一个 windows service程序,都是可以先做为一个控制台程序而调试的。只不过windows service额外多出了一个部署文件,有10、20几行代码用于部署而已。 看来你开发windows service方面,应该找人问问。应该知道一个windows service是怎样作为控制台程序而调试的。
  • 打赏
  • 举报
回复
我发现,有许多人都假设“不能在服务器部署任何windows计划任务、或者服务程序”之类的系统。不知道这些人的asp.net 是谁教出来的?! asp.net 就是编写个简单的网页客户端的。不是来做一个企业的自动化的服务功能的。
winnowc 2015-08-30
  • 打赏
  • 举报
回复
Topshelf 吧,这个东西可以把console程序变成windows service,调试就和console程序一样可以直接运行,非常方便。它也帮程序添加了命令行支持,方便注册/卸载service。最简单的例子是这样。 如果是比较重要的任务,最好不要用timer,应该用更完善的定时任务框架,比如Quartz.net
insus 2015-08-30
  • 打赏
  • 举报
回复
自动触发...
likevs 2015-08-28
  • 打赏
  • 举报
回复
看好二楼,写个winform,每到时间点就请求一个那个服务网址(触发它),不过确实3楼所说,winform有时候会被自动升级的360杀毒软件给强制关闭,有些烦人,每次都得手动启动回来,所以,建议如果能windows service,就尽量windows service,调试不方便,你就写个像错误日志记录那样的机制,存起来慢慢分析再改。 如果只是单纯的数据处理,比如SQL存储过程能搞定的,则支付4楼的做法,写个数据库作业包就可以了 最不支持的就是楼主的试,弄一个在Application_Start 里 使用timer,楼主自己也明白,IIS一因空闲挂起,那这定时器就废掉了。 如果楼主的服务器不经常被操作的话,倒是有一个有些另类的解决办法: 写一个html页面,里面放个js定时器,然后ajax定时请求指定的页面(触发它),这是上面的winform的变种,相对来说,它不会被360杀毒软件升级而强制关闭,缺点是得在服务器上IE打开这个页面一直运行,有点扯蛋
lili20090907 2015-08-28
  • 打赏
  • 举报
回复
用winform 的定时处理,或者 写成服务, 或者用SQL 任务
ouyang4683 2015-08-28
  • 打赏
  • 举报
回复
winform程序 很可能被手欠的关掉, 我都是用winform调完 ,改成service , 只能定期查日志去查错
全栈极简 2015-08-28
  • 打赏
  • 举报
回复
不像用windows service,也可以写个winform程序,用timer控制定时处理数据。不用的时候最小化托盘。
ouyang4683 2015-08-28
  • 打赏
  • 举报
回复
引用 5 楼 insus 的回复:
try this: http://www.cnblogs.com/insus/p/3658752.html
老师,这个看过,但触发,还是要手动触发 ?
於黾 2015-08-28
  • 打赏
  • 举报
回复
写个控制台,执行一次就自动退出 然后放到windows计划任务里定时启动
insus 2015-08-28
  • 打赏
  • 举报
回复

62,046

社区成员

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

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

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

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