如何在控制台应用程序中使用Quartz.net [显示错误]?

时间:2012-01-16 15:26:32

标签: c# asp.net scheduling quartz.net

我正在使用Quartz.Net来安排任务。我试过这么聪明。

启动了visual studio控制台应用程序并添加了两个引用,即Quartz.dll和Common.Logging.dll以及System.Web.Services;

然后我对链接http://simplequartzschedulerincsharp.blogspot.com/上提供的正常任务进行了一些编码 (他们声称自己的工作)

但是当我试图运行该程序时,它给出错误为“缺少对Quartz.all的引用”,但我已经添加了这个。

为什么会这样?

还有一点我注意到需要安装Quartz.Server.Service来使用它等等。

请指导我,请给我一个简单但有效的例子和点我错过了?

1 个答案:

答案 0 :(得分:11)

网站上的示例可能已过时。

我对使用的类进行了一些修改,现在它运行了:

using System;
using Quartz;
using Quartz.Impl;
using Quartz.Impl.Triggers;
// Necessary references:
// Quartz dll
// Common.Logging
// System.Web
// System.Web.Services

namespace QuartzExample
{
    class Program
    {
        private static IScheduler _scheduler;

        static void Main(string[] args)
        {
            ISchedulerFactory schedulerFactory = new StdSchedulerFactory();
            _scheduler = schedulerFactory.GetScheduler();
            _scheduler.Start();
            Console.WriteLine("Starting Scheduler");

            AddJob();
        }

        public static void AddJob()
        {
            IMyJob myJob = new MyJob(); //This Constructor needs to be parameterless
            JobDetailImpl jobDetail = new JobDetailImpl("Job1", "Group1", myJob.GetType());
            CronTriggerImpl trigger = new CronTriggerImpl("Trigger1", "Group1", "0 * 8-17 * * ?"); //run every minute between the hours of 8am and 5pm
            _scheduler.ScheduleJob(jobDetail, trigger);
            DateTimeOffset? nextFireTime = trigger.GetNextFireTimeUtc();
            Console.WriteLine("Next Fire Time:" + nextFireTime.Value);
        }
    }

    internal class MyJob : IMyJob
    {
        public void Execute(IJobExecutionContext context)
        {
            Console.WriteLine("In MyJob class");
            DoMoreWork();
        }

        public void DoMoreWork()
        {
            Console.WriteLine("Do More Work");
        }
    }

    internal interface IMyJob : IJob
    {
    }
}