【问题标题】:Scheduling a windows service with quartz .NET使用quartz .NET 调度windows 服务
【发布时间】:2012-05-21 19:22:03
【问题描述】:

我有一个自定义的 Windows 服务,我想使用 Quartz .NET 来安排服务的运行时间。现在,我了解了quartz.NET 的基础知识,但我不确定如何将它连接到Windows 服务。所以,假设我有Service.exe,我想每小时运行一次。我将如何通过 Quartz 实现此功能?我知道这是一个模糊的问题,但真的没有其他方法可以问。

提前致谢。

【问题讨论】:

  • 我会在这种情况下使用 Windows 调度程序,因为该功能已经封装在服务中。
  • 这也是我的第一个想法。但不幸的是,我不会在这里做决定:P

标签: c# .net windows-services quartz-scheduler quartz.net


【解决方案1】:

您需要设置作业和触发器。该作业由触发器调用。(http://quartznet.sourceforge.net/tutorial/lesson_3.html)。这是一个每小时运行的示例。

// construct a scheduler factory
ISchedulerFactory schedFact = new StdSchedulerFactory();

// get a scheduler
IScheduler sched = schedFact.GetScheduler();
sched.Start();

// construct job info
JobDetail jobDetail = new JobDetail("myJob", null, typeof(DumbJob));
// fire every hour
Trigger trigger = TriggerUtils.MakeHourlyTrigger();
// start on the next even hour
trigger.StartTime = TriggerUtils.GetEvenHourDate(DateTime.UtcNow);  
trigger.Name = "myTrigger";
sched.ScheduleJob(jobDetail, trigger);

这是调用 Service.exe 的类。

public class DumbJob : IJob
{
    public void Execute(JobExecutionContext context)
    {
        string instName = context.JobDetail.Name;
        string instGroup = context.JobDetail.Group;

        // Note the difference from the previous example
        JobDataMap dataMap = context.MergedJobDataMap;

        string jobSays = dataMap.GetString("jobSays");
        float myFloatValue = dataMap.GetFloat("myFloatValue");
        ArrayList state = (ArrayList) dataMap.Get("myStateData");
        state.Add(DateTime.UtcNow);

        Console.WriteLine("Instance {0} of DumbJob says: {1}", instName, jobSays);
    }
}

您也可以只在 Windows 服务中启动一个线程,跟踪您上次触发 exe 的时间,然后再重置。它比 Quartz 简单一些,并且可以完成同样的事情。但是,您的问题是针对 Quartz 的。

【讨论】:

  • 但它实际上在哪里连接到 Service.exe?
  • 你在“Execute(...)”方法中调用它。
  • 你可以使用:Process.Start("Service.exe");您可以使用更多选项以及传递 ProcessStartInfo 对象,但基本上您可以使用。
猜你喜欢
  • 1970-01-01
  • 2014-08-28
  • 2012-06-22
  • 2010-10-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-11-14
  • 1970-01-01
相关资源
最近更新 更多