2013-01-23 134 views
0

我知道您将Quartz解决方案编译为可作为Windows服务运行的exe文件。而且这个Quartz服务器以某种方式运行作业。我没有得到的是,我在哪里放置了所有工作代码,这些代码实际上完成了这项工作?比方说,我希望我的“工作”调用存储过程,或者每小时调用一次Web服务。或者如果我有我想要执行的本机VB代码呢? (而且我不想创建另一个独立的VB应用程序,它可以从命令行调用。)所有这些类型的作业配置将被存储,编码和配置的位置并不明显。在Quartz.Net中运行作业

回答

1

我建议你先阅读教程。
你可以在Jay Vilalta的blog找到很多有用的信息。

Getting Started With Quartz.Net: Part 1
Getting Started With Quartz.Net: Part 2
Getting Started With Quartz.Net: Part 3

Scheduling Jobs Programmatically in Quartz.Net 1.0

Scheduling Jobs Programmatically in Quartz.Net 2.0

,然后你可以看看github code,并尝试examples这是非常有据可查的。

UPDATE

服务器是调度。
这是一个不断运行的Windows服务应用程序,可以运行您使用客户端应用程序安排的工作。
你甚至可以像我一样编写自己的服务器(Windows服务),因为我不想使用远程处理与该层交谈。

您可以决定安排和运行在一个控制台应用程序的工作(我不建议) 用几行代码:

class Program 
{ 
    public static StdSchedulerFactory SchedulerFactory; 
    public static IScheduler Scheduler; 

    static void Main(string[] args) 
    { 
     SchedulerFactory = new StdSchedulerFactory(); 
     Scheduler = SchedulerFactory.GetScheduler(); 

     var simpleTrigger = TriggerBuilder.Create() 
       .WithIdentity("Trigger1", "GenericGroup") 
       .StartNow() 
       .WithSimpleSchedule(x => x.RepeatForever().WithIntervalInSeconds(5)) 
       .Build(); 

     var simpleJob = JobBuilder.Create<SimpleJob>() 
            .WithIdentity("simpleJob", "GenericGroup") 
            .Build(); 

     Scheduler.ScheduleJob(simpleJob, simpleTrigger); 

     Console.WriteLine("Scheduler started"); 

     Scheduler.Start(); 

     Console.WriteLine("Running jobs ..."); 

     Console.ReadLine(); 

     Scheduler.Shutdown(waitForJobsToComplete: false); 

     Console.WriteLine("Shutdown scheduler!"); 

    } 
} 

这是工作:

public class SimpleJob : IJob 
{ 
    public virtual void Execute(IJobExecutionContext context) 
    { 
     JobKey jobKey = context.JobDetail.Key; 
     Console.WriteLine("{0} Executing job {1} ", DateTime.Now.ToString(), jobKey.Name); 
    } 
} 

你可以下载一个测试项目hereVerySimpleQuartzApp)。

上面的应用程序不存储触发器/作业信息。

您可以决定是否要将作业/触发器的信息保存在XML文件中,如herehere所述。
或者您可以将作业/触发器存储在database中,以便调度程序(通常是Windows服务)可以读取这些信息并运行作业。

如果您正在寻找一个可以与服务器进行通信(通过远程处理)并安排作业并运行它的示例,则可以使用this

有几个开源项目(经理),您可以使用它来启动/停止或计划作业。阅读我的答案here

+0

谢谢,我读过发布之前的所有内容。我看到的唯一实际例子是如何从命令行运行单独的EXE文件,这是我不想做的事情。所有的代码示例...你把代码放在哪里?在石英解决方案本身?简单调用Web服务怎么样?我是否必须构建一个完整的应用才能调用该服务?这是我在所有教程中找不到的实际实现细节。 –

+0

我已经更新了我的答案。希望它有帮助。 – LeftyX

+0

非常有帮助!我快到了。所以我有你说的调度器。我可以在某处使用客户端的方式定义日程安排,作业等。但是我在哪里放置了工作的实际工作代码?我没有看到xml作业会告诉调度程序究竟要运行什么。我把DLL放在什么地方?另外,每小时一次简单的Web服务调用又如何?我需要一个完整的迷你exe或dll来实现简单的事情吗? –