我正在使用ASP.NET MVC3开发一个Web应用程序。 要求是:在某个时间间隔(上午0:00或晚上10:00),应用程序必须自动执行一些任务,例如:在DB中更改订单状态,向客户发送通知电子邮件,清除临时文件夹....
我正在考虑在Global.aspx中使用一个线程,让它运行并睡眠24小时,但我认为这不是一个好的解决方案。
@谢谢patryk-wiek评论,我在这里找到了一个带有“Task Scheduler MVC”关键字的解决方案。 https://github.com/jgeurts/FluentScheduler
这是一个好的解决方案吗?我觉得写一个窗口服务对我来说有点矫枉过正?
答案 0 :(得分:3)
请勿在您的网络应用程序中执行此操作,因为您可能无法控制主机进程何时超时!
创建一个Windows服务来执行这些任务。
答案 1 :(得分:0)
你可以通过创建相同的窗口服务来使用RX ...因为我已经附加了一个示例代码,它将首先悬挂,并将以2分钟的常规间隔执行操作。: -
Observable.Generate(
true,
_ => true,
i =>
{
////your code...
return i;
},
i => i,
_ => TimeSpan.FromMinutes(2)).Subscribe();
答案 2 :(得分:0)
不要在您的网络应用程序中执行此操作,因为AppPool可以随时终止。有办法如何防止这种情况,但它不是很干净的解决方案。
使用Windows调度程序,WCF服务或某些工作流程解决方案来执行日志运行任务。