2016-02-23 118 views
3

Quartz.net如何在后台工作。假设我已经创造了一个明年将会被触发的工作。所以在一年的背景中发生了什么。 。是否有一个进程或线程持续运行一年?是否在后台实现了定时器?Quartz.net作业调度

回答

0

您需要启动Quartz调度程序。只要计划程序正在运行,Quartz就会根据计划跟踪计划并启动作业。但是由于Quartz是一个托管在你的应用程序中的库,你必须自己启动Quartz调度器。

在没有总是活动的应用程序(如网站)的情况下,您必须找到某种方式让Quartz调度程序独立于该调度程序运行(例如,在调度程序服务中专用于运行您的工作)。我在ASP.Net项目中发现了一些使用Quartz.net的参考,但我没有在网站中运行Quartz的个人经验。我不知道Quartz如何对IIS关闭或重新使用您的网站运行的应用程序池做出反应。但是如果您的工作可以处理被中止,那么这可能是一个可行的选择。您需要在Global类的Application_Start事件中启动调度程序。

无论您如何运行Quartz,您都需要使用非易失性作业存储。 Quartz可以将计划作业存储在内存中,但是每次应用程序启动后,您都必须重新计划所有作业。因此强烈建议使用另一个可在应用程序重新启动之间保留作业的作业存储。

Quartz.net quick-start tutorial有一些代码来展示如何在您的应用程序中使用Quartz。

+1

也许我可以在global.asax文件中做到这一点,以便每当应用程序重新启动调度程序与其作业。会有帮助吗? –

+0

https://quartz-scheduler.org/generated/2.2.1/pdf/Quartz_Scheduler_Developer_Guide.pdf –

+0

好像你可以在global.asyx中使用Quartz,但我不知道它有多可靠,只要认为合适,就使用您的应用程序池。 http://www.mikesdotnetting.com/article/254/scheduled-tasks-in-asp-net-with-quartz-net –