【发布时间】:2021-11-15 01:58:20
【问题描述】:
我在服务启动中添加了调度程序,例如:
services.AddQuartz(q =>
{
q.SchedulerId = "S1";
q.SchedulerName = "S1";
q.UseMicrosoftDependencyInjectionJobFactory();
q.UsePersistentStore(s =>
{
s.UseProperties = true;
s.UsePostgres("ConnectionString");
s.UseJsonSerializer();
});
})
现在我正在尝试通过 DI 使用这个创建的调度程序,例如:
public SchedulerStartup(ISchedulerFactory schedulerFactory)
{
this.schedulerFactory = schedulerFactory;
}
public async Task StartAsync(CancellationToken cancellationToken)
{
Scheduler = await schedulerFactory.GetScheduler("S1", cancellationToken);
await Scheduler.Start(cancellationToken);
}
但不知何故,Scheduler 为空。我无法在启动配置中访问创建的调度程序 (S1)。
【问题讨论】:
-
你用什么接口类来实现的?你可以阅读这篇文章,它可能对你有帮助。 stackoverflow.com/questions/42157775/…
-
只需调用 GetScheduler 而不指定 ID,它将返回您配置的唯一一个。
-
这里我错过了
services.AddQuartzHostedService()使用托管服务启动调度程序。不需要额外的启动类。 @MarkoLahma
标签: c# asp.net-core quartz.net