【问题标题】:ASP.net create infinite loop on application start to do workASP.net 在应用程序开始工作时创建无限循环
【发布时间】:2018-05-21 19:58:35
【问题描述】:

我需要定期做一些工作,比如检查数据库中的一些数据,并在需要时进行一些计算并将它们存储回数据库。

问题是,在应用程序启动时在单独的线程中使用一些“睡眠并工作”来启动无限查看有多糟糕,该线程会定期执行所有必需的任务,直到池关闭?

有什么缺点?由于 MVC 资源的可重用/可释放概念,我觉得它可能会影响 asp.net 处理性能,但我找不到任何证据。

感谢任何链接或提示,谢谢!

附:我意识到执行此类操作的最佳位置是 Windows 服务,但它在客户端环境中的部署带来了一些困难,我正在检查是否有任何其他选项。

【问题讨论】:

  • asp.net / mvc 真的不适合这样的事情,但如果你要在那里做,看看Hangfire

标签: asp.net asp.net-mvc webforms


【解决方案1】:

我建议你构建一个简单的控制台应用程序来做你想做的事,然后设置一个计划任务来运行控制台应用程序。

这是我用来执行维护实用程序的方法,例如您所描述的方法。

否则,在 Asp.net 应用程序中,工作进程可能会被重置,主机可能会触发空闲超时。通常我认为,当一个非常简单的控制台应用程序使用您喜欢的语言并完成相同的任务时,这将是错误的方法。

【讨论】:

  • 不幸的是,任何应用程序在有人登录服务器之前都不会启动,因此它无法在 Web 服务器上运行。但无论如何,感谢您确认我对在工作进程中运行无限查看的疑问。
  • “不幸的是,任何应用程序在有人登录服务器之前都不会启动” 这就是计划任务的用途。但是,如果您愿意,您可以在应用程序启动或用户登录时触发维护式任务,方法是在 global.asax、Application_Start() 方法中嵌入对控制台应用程序(或项目中的其他代码)的调用例子。
  • 当我需要时从网络工作者开始任务 - 它可能有效,感谢您的想法。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-05-09
  • 1970-01-01
  • 2012-07-13
相关资源
最近更新 更多