gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 17:39:53 24 4
gpt4 key购买 nike

我需要在 ASP.NET MVC 站点上重复运行一个任务;它需要在每个时间间隔运行(间隔无关紧要)。

我通过从 Global.asax.cs Application_Start 设置一个后台线程来实现这一点,该线程运行任务,休眠一段时间,然后再次运行......一次又一次。

虽然这行得通,但它似乎不是正确的方法,似乎有点笨拙。

然后我用一个 Timer 对象替换了它,这不能可靠地工作 - 似乎其他人也有问题 - 所以我不打算使用它。

这需要在 MVC 站点中运行,它用于从队列中提取作业并从准备发送电子邮件的 View 中呈现它们。

我想过使用 ThreadPool 并让之前的工作留下另一份工作,但因为这些可能是长时间运行的工作,我读到这可能最终不会留下足够的线程来通过饥饿处理 Web 请求。

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

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

最佳答案

Stackoverflow 本身使用(或至少曾经使用)一种狡猾的方式来做到这一点。看这里:https://blog.stackoverflow.com/2008/07/easy-background-tasks-in-aspnet/
简而言之,您可以这样做:

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

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

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

关于asp.net-mvc - ASP.NET MVC 重复任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6491301/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com