如何在MVC4 C#中安排任务?

时间:2013-01-31 07:03:53

标签: asp.net-mvc-4 scheduling

我想在我的网站上创建一个通知系统?(类似堆栈溢出)
我们如何安排每24小时向用户发送通知的任务?

我们可以使用MVC4还是应该使用Windows服务?

修改
我在MVC4应用程序中使用FluentScheduler 3个月的经验 FluentScheduler很容易配置和使用,但它不会随时运行任务。有时跑,有时不跑 我认为调度的最佳方式是Windows Service,以确保在特定时间运行任务。

7 个答案:

答案 0 :(得分:16)

发现这是一个很棒的调度程序,FluentScheduler

用法:

// Schedule an ITask to run at an interval
    Schedule<MyTask>().ToRunNow().AndEvery(2).Seconds();

答案 1 :(得分:7)

您需要.Net Job Scheduler。这是一个很好的:http://quartznet.sourceforge.net/

答案 2 :(得分:3)

您可以使用ATrigger日程安排服务。 .Net library也可用于创建计划任务而无需开销。错误日志,分析,任务列表和更多好处。

免责声明:我是ATrigger团队的一员。这是一个免费软件,我没有任何商业目的。

答案 3 :(得分:2)

也许你想要使用预定的任务。在MVC中执行此操作是一个坏主意(混合责任)并且构建Windows服务对我来说看起来有点过分(因为某些事情不需要一直运行)。

答案 4 :(得分:1)

我使用Windows的预定任务。

我构建了一个小应用,而不是在bd中输入记录,然后使用此recordId(Guid)作为参数访问网站。

在mvc中我检查id是否存在,如果它存在,我运行任务然后删除db中的记录,如果不是我忽略它。

这种方式我可以用param添加日程安排。每次我需要新的计划任务时都不更新应用程序。我只是添加一个新的任务 &#34; myapp.exe / MyNewTaskName&#34;

希望这能帮到某人; - )

答案 5 :(得分:1)

首先;

  1. 添加Nuget包Install-Package FluentScheduler
  2. 添加继承Registry和某些代码的注册表类
  3. // Schedule a simple task to run at a specific time
    Schedule(() => System.Diagnostics.Debug.Write("This is from service " + DateTime.Now.Second+"\n"))
                   .ToRunNow().AndEvery(2).Seconds();
    
    1. Global.asax.cs的Application_Start中注册该注册表类 使用TaskManager
    2. TaskManager.Initialize(new Test());
      

      GitHub

答案 6 :(得分:0)

还有一个内置选项QueueBackgroundWorkItem。它已添加到.Net 4.5.2和here is a guide on how to use it in MVC中。

除了之前提到的FluentScheduler,你还有HangFire。如果您计划部署到Azure there's a handful of different services for this