如何在 Windows 服务中使用 Quartz.Net 安排任务?

Posted

技术标签:

【中文标题】如何在 Windows 服务中使用 Quartz.Net 安排任务?【英文标题】:How to schedule tasks using Quartz.Net inside a Windows Service? 【发布时间】:2011-06-24 23:31:11 【问题描述】:

我在 VS 中创建了一个 Windows 服务项目,并在其中配置 Quartz.Net 以立即运行任务。注册任务的代码无异常运行,但就我的调试情况而言,任务从未执行过。

我不能确定,因为调试 Windows 服务非常不同。我这样做的方式是从我的代码中以编程方式启动调试器。 Quartz.Net 在单独的线程上运行作业,但我不确定 VS2010 在调试 Windows 服务时是否可以看到其他正在运行的线程。

以前有人做过我正在尝试的事情吗?任何提示都表示赞赏。

PS。我不想使用 Quartz.Net 自己的服务。

【问题讨论】:

这里是实现相同的分步指南:blog.nitinsawant.com/2014/10/… 【参考方案1】:

作业不执行的最常见原因之一是您需要在调度程序实例上调用 Start() 方法。

http://quartznet.sourceforge.net/faq.html#whytriggerisntfiring

但是,如果我们没有某种类型的 sn-p 代码来执行调度程序创建和作业注册,就很难说问题出在哪里。

【讨论】:

【参考方案2】:

我发现这有点过时了,但它在各种搜索中出现了很多次!

一定要查看这篇文章,它在实例化调度程序时使用 XML 配置。 http://miscellaneousrecipesfordotnet.blogspot.com/2012/09/quick-sample-to-schedule-tasks-using.html

如果您不想使用 XML(动态创建的任务等),请将上面文章中的“运行”过程替换为以下内容:

    public void Run()
    
        // construct a scheduler factory
        ISchedulerFactory schedulerFactory = new StdSchedulerFactory();

        _scheduler = schedulerFactory.GetScheduler();

        IJobDetail job = JobBuilder.Create<TaskOne>()
                .WithIdentity("TaskOne", "TaskOneGroup")
                .Build();
        ITrigger trigger = TriggerBuilder.Create()
        .WithIdentity("TaskOne", "TaskOneGroup")
        .StartNow()
        .WithSimpleSchedule(x => x.WithIntervalInSeconds(20).RepeatForever())
        .Build();
        _scheduler.ScheduleJob(job, trigger);
        _scheduler.TriggerJob(job.Key);

        _scheduler.Start();
    

注意 - 使用 Quartz .NET 2.1.2、.NET 4

干杯!

【讨论】:

网址miscellaneousrecipesfordotnet.blogspot.com/2012/09/…不存在【参考方案3】:

我之前在 Windows 服务中成功使用过 Quart.NET。当服务启动时,我创建调度器工厂,然后获取调度器。然后我启动调度程序,它隐式读取我在服务的 App.config 中指定的配置 XML。

Quartz.NET 基本设置:http://quartznet.sourceforge.net/tutorial/lesson_1.html

App.config 设置问题:http://groups.google.com/group/quartznet/browse_thread/thread/abbfbc1b65e20d63/b1c55cf5dabd3acd?lnk=gst&q=%3Cquartz%3E#b1c55cf5dabd3acd

【讨论】:

以上是关于如何在 Windows 服务中使用 Quartz.Net 安排任务?的主要内容,如果未能解决你的问题,请参考以下文章

Quartz.NET总结如何根据自己需要配置Topshelf 服务

Topshelf + Quartz2.5 创建基于windows服务

Quartz 配置文件详解

如何在服务器上运行没有 Windows 服务的计划作业?

彻底卸载Windows Service

使用Quartz Job 简单的做一个定时服务