在项目运行时重复MVC项目中的代码

时间:2012-06-19 19:28:46

标签: c# asp.net-mvc-3 visual-studio-2010 timer

我想知道在你的web项目启动时是否可以循环一些代码(我正在使用MVC4 RC和C#)。例如,您有一个实体工厂。这家工厂每小时创造一把椅子。因此,项目应该在服务器上运行时执行此操作。无论用户是否在网站上。这可能吗?你会怎么做?

2 个答案:

答案 0 :(得分:3)

是的,有一种方法可以做到这一点:在具有特定生命周期的缓存中放入一些东西并注册OnCacheRemovedCallback。在此回调中,执行您要执行的操作并将新项目插入缓存。您需要在启动时插入6以启动链。这是由SO完成的(见http://blog.stackoverflow.com/2008/07/easy-background-tasks-in-aspnet/),所以它可行。它显然有效,可称为实用解决方案。

有些人会认为这种方式是“hackish”,如果不确切知道你做了什么或为什么要这样做,我会倾向于不这样做。绝对不是做这些任务的艺术。


另一个选项(user1308743已经提到过这个):创建一个执行所需操作的exe文件,让它每小时从Task Scheduler调用一次。


略有不同的选择:编写Windows服务并实现计时器或使用Quartz.NET之类的方式来安排您的工作。也许是最具工作性和最具企业性的解决方案,但它有效(已经实现了类似这样的东西,就像我需要做的那样有魅力)。作为附加值,您可以以可配置的方式编写计划。


在SO上找到另一个选项:Recurring tasks in ASP .NET

答案 1 :(得分:2)

这可能不是正确的方法,但您可以创建一个EXE来处理您的任务并让它在服务器上运行。