相关疑难解决方法(0)

如何在ASP.NET Core中启动Quartz?

我有以下课程

 public class MyEmailService
 {
    public async Task<bool> SendAdminEmails()
    {
        ...
    }
    public async Task<bool> SendUserEmails()
    {
        ...
    }

 }
 public interface IMyEmailService
 {
    Task<bool> SendAdminEmails();
    Task<bool> SendUserEmails();
 }
Run Code Online (Sandbox Code Playgroud)

我已经安装了最新的Quartz 2.4.1 Nuget包,因为我想在我的Web应用程序中使用轻量级调度程序,而不需要单独的SQL Server数据库.

我需要安排方法

  • SendUserEmails 每周一至周一17:00,周二17:00和周三17:00
  • SendAdminEmails 每周星期四09:00,星期五9:00运行

在ASP.NET Core中使用Quartz安排这些方法需要什么代码?我还需要知道如何在ASP.NET Core中启动Quartz,因为互联网上的所有代码示例仍然引用以前版本的ASP.NET.

我可以找到以前版本的ASP.NET 的代码示例,但我不知道如何在ASP.NET Core中启动Quartz以开始测试.我在哪里放入JobScheduler.Start();ASP.NET Core?

quartz.net asp.net-core-mvc asp.net-core

19
推荐指数
3
解决办法
2万
查看次数

如何从数据库动态重新安排C#中的Quartz作业调度程序?

我已经在我的C#.Net网站中包含了Quartz.net库,可以根据某些条件自动发送电子邮件.我已经使用RepeatForever()开始了这项工作.我从数据库中获取调度程序的设置.现在,当作业已经启动时,无论如何都要检查数据库中调度程序的设置是否已更改,所以我还应该在我的方法中更新它们,以便调度程序动态运行新设置?到目前为止,我已经这样做了:

public void StartJob()
    {
        var reminderSettings = GetReminderSettings();  //getting these settings from database
        var count = GetUnpaidInvoicesListCount();
        var intervalBtwnReminders = 0;
        if (reminderSettings?.RemindersGap != null)
        {
            intervalBtwnReminders = (int)(reminderSettings.RemindersGap);         
        }

        ISchedulerFactory schedFact = new StdSchedulerFactory();

        IScheduler sched = schedFact.GetScheduler();
        sched.Start();

        // create job
        IJobDetail job = JobBuilder.Create<EmailJob>()
                .WithIdentity("job1", "group1")
                .Build();

        // create trigger
        ITrigger trigger = TriggerBuilder.Create()
            .WithIdentity("trigger1", "group1")
            .WithSimpleSchedule(x =>
            {
                 x.WithIntervalInMinutes(intervalBtwnReminders ).RepeatForever();
            })
            .Build();

        sched.ScheduleJob(job, trigger);
    }
Run Code Online (Sandbox Code Playgroud)

.net c# quartz.net

3
推荐指数
1
解决办法
2780
查看次数

使用 Quartz.NET 3.0.3 和 Simple Injector How To 进行构造函数注入

我正在尝试在 Windows 服务中使用 Quartz.Net v3.0.3 和 Simple Injector。

我有一个工作类,我想在其中注入一些依赖项,例如我的记录器。

public class JobWorker :  IJob
{
    private ILogger _logger;

    public JobWorker(ILogger logger)
    {
        _logger = logger;
    }

    public Task Execute(IJobExecutionContext context)
    {
        return Task.Run(() =>_logger.Log("Do Work"));
    }
}
Run Code Online (Sandbox Code Playgroud)

我尝试Container.Register<IJob, JobWorker>();在我的 DI 层上注册,但这没有帮助。

如果我删除注入的依赖项并简单地使用默认的无参数构造函数,则作业会正确触发。

根据 Steven 下面的帖子,建议是创建一个工厂,但是在新框架的上下文中提供的答案已经过时,我完全不知道如何将依赖项注入作业。

使用 Quartz.NET 和 Simple Injector 进行构造函数注入

c# windows-services dependency-injection quartz.net simple-injector

3
推荐指数
1
解决办法
4364
查看次数