3

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

4

2 回答 2

3

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

有些人会认为这有点“骇人听闻”,如果不确切知道您在做什么或为什么要这样做,我往往不会这样做。这绝对不是完成此类任务的艺术。


另一种选择(user1308743 提到过这一点):创建一个可执行您需要的 exe,并让它每小时从任务计划程序中调用一次。


一个稍微不同的选择:编写一个 Windows 服务并实现一个计时器或使用 Quartz.NET 之类的东西来以这种方式安排你的工作。也许是工作最多、最受企业欢迎的解决方案,但它确实有效(已经实现了类似的东西,并且对我需要做的事情很有魅力)。作为附加值,您可以以可配置的方式编写您的日程安排。


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

于 2012-06-19T19:38:07.413 回答
2

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

于 2012-06-19T19:31:54.043 回答