我是ASP.NET的整个概念的新手,所以请耐心等待我。我的要求是创建一个调度组件,它将执行存储在数据库中的一些任务。实现这一目标的最常见方式是什么。我的想法是将时间间隔存储为TimeSpan,并以某种方式在很短的时间内轮询我的数据库。
答案 0 :(得分:1)
我建议将任务执行程序实现为 Windows服务。
以下是一些方法:
服务可能会定期轮询数据库并执行任务。
使用MSMQ。它允许使用系统范围的队列:一个进程(ASP.NET Web应用程序)可以生成队列项,另一个进程(服务) - 使用它们。 How to do asynchronous programming using ASP.NET, MSMQ and Windows Service, for long running processes
答案 1 :(得分:1)
对于更高级的调度方案,Quartz.net是一个非常有用的工具 - http://quartznet.sourceforge.net/ - 从Java移植(我认为)。
正如其他人指出的那样,ASP.Net的生命周期并不适合常规计划任务。但是,我已经看到了几个Web应用程序和Web应用程序框架(例如DotNetNuke和YetAnotherForum,我认为),它们通过在网络命中服务之后偶尔借用线程池线程来执行计划任务。这在共享主机模型中非常有用,您通常会限制在服务器上安装的内容。
答案 2 :(得分:0)
如果您查看的是较短的间隔,通常会使用Timer类 - 框架中有几个例如System.Timers.Timer和System.Threading.Timer。您将Interval设置为毫秒数(使用TimeSpan静态方法,如FromSeconds或FromMinutes以便于阅读)
查看System.Timers.Timer vs System.Threading.Timer以了解两个计时器的比较