加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-mvc – ASP.NET MVC重复任务

发布时间:2020-12-16 00:15:09 所属栏目:asp.Net 来源:网络整理
导读:我需要在ASP.NET MVC站点上重复运行一个任务;它需要每个时间间隔运行(间隔无关紧要). 我通过设置运行任务的Global.asax.cs Application_Start中的后台线程来实现这一点,睡眠时间间隔然后再次运行…. 虽然这样做似乎不是正确的方法,看起来有点hacky. 所以我用
我需要在ASP.NET MVC站点上重复运行一个任务;它需要每个时间间隔运行(间隔无关紧要).

我通过设置运行任务的Global.asax.cs Application_Start中的后台线程来实现这一点,睡眠时间间隔然后再次运行….

虽然这样做似乎不是正确的方法,看起来有点hacky.

所以我用Timer对象替换它,这不能可靠地工作 – 似乎其他人也遇到了问题 – 所以我不打算用它.

这需要在MVC站点中运行,它用于从队列中提取作业并从Views中呈现它们以便发送电子邮件.

我考虑过使用ThreadPool并让前一个工作留下另一份工作,但是因为这些工作可能是长时间运行的工作,我已经读到这可能最终没有留下足够的线程来通过饥饿来处理Web请求.

在坚持使用原始线程方法之前,我想我会问其他人是否知道更好的方法.

我希望这是有道理的.实际上,我想要实现的是心跳.在MVC站点中充当生产者/消费者模式的消费者部分的东西.

解决方法

Stackoverflow本身使用(或至少习惯使用)这种方法的巧妙方式.见: http://blog.stackoverflow.com/2008/07/easy-background-tasks-in-aspnet/

简而言之,你这样做:

  1. At startup,add an item to the HttpRuntime.Cache with a fixed
    expiration.

  2. When cache item expires,do your work,such as WebRequest or what have
    you.

  3. Re-add the item to the cache with a fixed expiration.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读