繁体   English   中英

如何在 Quartz.NET IScheduler 中正确使用 DI?

[英]How to properly use DI with Quartz.NET IScheduler?

我正在开发一个 Asp.Net Core 3.1 应用程序,我需要在其中安排不同类型的作业。 我们使用 Scoped 作业来处理 Scoped 服务(如 dbcontext)。 最近,Quartz.NET 在UseMicrosoftDependencyInjectionScopedJobFactory的帮助下支持开箱即用的作用域作业(如官方文档中所述)。

但是,我不确定如何注册实际的调度程序以便将其注入我的服务并能够在运行时调度新作业。

我知道我可以通过这样做来控制 IScheduler:

ISchedulerFactory schedulerFactory = new StdSchedulerFactory();
     scheduler = schedulerFactory.GetScheduler();

但是我还没有找到任何关于如何在我的实际服务管道中注册它的文档。 这样做的正确/推荐/记录方式是什么?

文档描述了如何将Quartz.NET与 DI 容器一起使用。 所以最好先检查描述的例子。

关于具有范围服务的ISchedulerFactory的动态解析,一旦您调用,工厂就会在容器中注册:

serviceCollection.AddQuartz(q => 
{
   ...
   // your configuration
   ...
   q.UseMicrosoftDependencyInjectionScopedJobFactory()
   ...
})

因此,在您的服务中,您可以注入ISchedulerFactory并对其执行操作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM