什么是在ASP.NET MVC2中运行耗时任务的可靠方法

时间:2010-09-15 08:48:48

标签: asp.net asp.net-mvc multithreading asp.net-mvc-2

我需要可靠的方法同时运行10个不同的任务。例如,第一个是发送电子邮件,而下一个是清理特定表中的行...等等。

我已经使用了Thread类,虽然它在我的开发机器(VS2010内部Web服务器)上运行良好,但是这些线程中的非线程似乎在我的生产服务器上完全正常工作。我不知道在生产服务器上调试问题的有效方法。

我看到this technique鼓励您注册缓存对象。由于应用程序在缓存项到期时触发回调,因此可以运行任何代码来模拟线程行为。这似乎有点像Micky Mouse。


我想我的问题是在ASP.NET MVC2应用程序中无限期运行后台任务的正确方法是什么?

3 个答案:

答案 0 :(得分:4)

最好的方法是不在ASP.net代码中运行它们。这听起来像是计划任务或Windows服务的理想任务。 ASP.net(MVC或其他)并没有真正建立这样做 - 将它们分成一个单独的项目。

答案 1 :(得分:1)

肯定有很多方法。这是一个。

将长时间运行的任务实现为Windows服务,使用MSMQ从ASP.NET应用程序向该服务发送有关待处理的消息,

答案 2 :(得分:1)

之前我一直在使用quartz.net,并且效果非常好。