1

我了解到您将 Quartz 解决方案编译成可以作为 Windows 服务运行的 exe。而且这个 Quartz 服务器以某种方式运行作业。我没有得到的是,我将所有实际工作的工作代码放在哪里?就像假设我希望我的“工作”调用一个存储过程,或者每小时调用一个 Web 服务。或者如果我有想要执行的本地 VB 代码怎么办?(而且我不想创建另一个从命令行调用的独立 VB 应用程序。)所有这些类型的作业配置将在哪里存储、编码和配置并不明显。

4

1 回答 1

1

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

Quartz.Net 入门:第 1 部分
Quartz.Net 入门:第 2 部分
Quartz.Net 入门:第 3 部分

在 Quartz.Net 1.0 中以编程方式调度作业

或者

在 Quartz.Net 2.0 中以编程方式调度作业

然后您可以查看github 代码并尝试使用文档非常齐全的示例。

更新

服务器是调度程序。
它是一个 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);
    }
}

你可以在这里下载一个测试项目(VerySimpleQuartzApp)。

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

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

如果您正在寻找一个可以与服务器通信(通过远程处理)并安排作业并运行它的示例,那么就是这样

有一些开源项目(管理器)可用于启动/停止或安排作业。在这里阅读我的答案。

于 2013-01-24T10:27:00.957 回答