据我所知,您将Quartz解决方案编译为可以作为Windows服务运行的exe。而且这个Quartz服务器以某种方式运行作业。我没有得到的是,我在哪里放置实际完成工作的所有工作代码?就像让我们说我希望我的“工作”来调用存储过程,或每小时调用一个Web服务。或者如果我有原生的VB代码我想执行怎么办? (而且我不想创建另一个从命令行调用的独立VB应用程序。)所有这些类型的作业配置都将被存储,编码和配置的地方并不明显。
答案 0 :(得分: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,这些文档都有详细记录。
<强>更新强>:
服务器是调度程序 它是一个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);
}
}
您可以下载测试项目here( VerySimpleQuartzApp )。
上述应用程序不存储触发器/作业信息。
您可以根据here和here说明决定是否要将作业/触发器的信息保存在XML文件中。 或者您可以将作业/触发器存储在database中,以便调度程序(通常是Windows服务)可以读取这些信息并运行作业。
如果您正在寻找一个可以与服务器通信的示例(通过远程处理)并安排作业并运行它,this就是那个。
您可以使用一些开源项目(经理)来启动/停止或安排作业。阅读我的回答here。