MVC 3 - 在间隔时间执行某项任务

时间:2013-10-07 07:56:43

标签: c# asp.net-mvc asp.net-mvc-3

我正在使用ASP.NET MVC3开发一个Web应用程序。 要求是:在某个时间间隔(上午0:00或晚上10:00),应用程序必须自动执行一些任务,例如:在DB中更改订单状态,向客户发送通知电子邮件,清除临时文件夹....

我正在考虑在Global.aspx中使用一个线程,让它运行并睡眠24小时,但我认为这不是一个好的解决方案。

@谢谢patryk-wiek评论,我在这里找到了一个带有“Task Scheduler MVC”关键字的解决方案。 https://github.com/jgeurts/FluentScheduler

这是一个好的解决方案吗?我觉得写一个窗口服务对我来说有点矫枉过正?

3 个答案:

答案 0 :(得分:3)

请勿在您的网络应用程序中执行此操作,因为您可能无法控制主机进程何时超时!

创建一个Windows服务来执行这些任务。

http://msdn.microsoft.com/en-us/library/d56de412.aspx

答案 1 :(得分:0)

你可以通过创建相同的窗口服务来使用RX ...因为我已经附加了一个示例代码,它将首先悬挂,并将以2分钟的常规间隔执行操作。: -

 Observable.Generate(
                true,
                _ => true,
                i =>
                {
                   ////your code...

                    return i;
                },
                i => i,
                _ => TimeSpan.FromMinutes(2)).Subscribe();

答案 2 :(得分:0)

不要在您的网络应用程序中执行此操作,因为AppPool可以随时终止。有办法如何防止这种情况,但它不是很干净的解决方案。

使用Windows调度程序,WCF服务或某些工作流程解决方案来执行日志运行任务。