【问题标题】:How to use Quartz.net in console application [showing error]? [closed]如何在控制台应用程序中使用 Quartz.net [显示错误]? [关闭]
【发布时间】:2012-01-16 15:26:32
【问题描述】:

我正在使用 Quartz.Net 来安排任务。我也试过了。

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

然后我为链接http://simplequartzschedulerincsharp.blogspot.com/提供的正常任务编写了一点代码 (他们声称它的工作原理)

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

为什么会这样?

在某处我注意到需要安装 Quartz.Server.Service 才能使用它等等。

请指导我并告诉我一个简单但有效的示例和我缺少的点?

【问题讨论】:

  • *.all from "Missing reference to Quartz.all" 是错误还是输入错误? :)
  • @RăzvanPanda :就像编码时一切都很好..我添加了 Quartz.dll 但是当我尝试运行(使用 F5)时它停止并说“找不到 Namespance Quartz ..are u 缺少对 Quartz 的引用”?

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


【解决方案1】:

网站上的例子可能已经过时了。

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

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
    {
    }
}

【讨论】:

  • 在哪里可以找到触发器规则?
  • @Johnny_D:我想你可以在tutorial 中找到相关信息。如果您下载source code,您还会发现一些有趣的示例任务配置。 hth
  • 上一个示例仅适用于 2.6.1 版本。如果你下载 nugget 包,最新版本默认是 3.2.1。教程页面上的在线示例已过时。
猜你喜欢
  • 2013-03-08
  • 1970-01-01
  • 1970-01-01
  • 2017-05-13
  • 2015-06-18
  • 2012-06-21
  • 1970-01-01
  • 2012-12-14
  • 2016-05-15
相关资源
最近更新 更多