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

Rom*_*man 5 .net c# windows windows-services quartz.net

我在VS中创建了一个Windows服务项目,并在其中配置Quartz.Net以立即运行任务.注册任务的代码运行时没有异常,但是就我的调试所知,任务永远不会执行.

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

有没有人做过我以前尝试过的事情?任何提示都表示赞赏.

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

war*_*man 7

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

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

但是,如果我们没有某种代码片段来执行调度程序创建和作业注册,那么很难说问题是什么.


Mar*_* D. 5

我看到这有点过时了,但是在各种搜索中却多次出现!

一定要查看这篇文章,该文章在调度程序实例化时使用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();
    }
Run Code Online (Sandbox Code Playgroud)

-使用Quartz .NET 2.1.2,.NET 4

干杯!