【发布时间】:2011-06-27 10:05:50
【问题描述】:
我需要在 ASP.NET MVC 站点上重复运行一个任务;它需要每隔时间间隔运行一次(时间间隔无关紧要)。
我通过从 Global.asax.cs Application_Start 中设置一个后台线程来实现这一点,该线程运行任务,休眠 时间间隔,然后再次运行......再次运行。
虽然这行得通,但它似乎不是正确的方法,似乎有点 hacky。
然后我用 Timer 对象替换它,这不能可靠地工作 - 似乎其他人也有问题 - 所以我不打算使用它。
这需要在 MVC 站点中运行,它用于从队列中提取作业并从视图中呈现它们以准备发送电子邮件。
我曾考虑过使用 ThreadPool 并让之前的作业留下另一个作业,但由于这些作业可能是长时间运行的作业,我已经读到这可能最终导致没有足够的线程来处理因饥饿而产生的 Web 请求.
在坚持使用原始线程方法之前,我想我会问是否有人知道这样做的更好方法。
我希望这是有道理的。实际上,我想要实现的是心跳。在 MVC 站点中充当生产者/消费者模式的消费者部分的东西。
【问题讨论】:
标签: asp.net-mvc multithreading