是否可以在Windows服务中包含Quartz.NET库?

时间:2015-03-05 14:57:37

标签: windows windows-services quartz.net

我目前正在开发一些每隔10分钟同步日历的Windows服务。我编写了这样做的控制台应用程序,但是当我尝试将其作为Windows服务实现时,它会在启动时中断。当我删除负责使用Quartz.NET库的代码时,服务启动并记录所有内容。每次实施新Job时,我都会收到Windows消息:

  

本地计算机上的CalendarSync服务已启动然后停止。如果某些服务未被其他服务或程序使用,则会自动停止。

有什么理由不能在Windows服务中使用这个库吗?

protected override void OnStart(string[] args)
{
    LogLibrary.Logs.WriteErrorLog("Calendar service started");
    OnStartDo();
}
 private static void OnStartDo()
    {
        try {
            IScheduler scheduler = StdSchedulerFactory.GetDefaultScheduler();
            scheduler.Start();


            IJobDetail job = JobBuilder.Create<Job>()
            .WithIdentity("job1", "group1")
            .Build();

            ITrigger trigger = TriggerBuilder.Create()
            .WithIdentity("trigger1", "group1")
            .StartNow()
            .WithSimpleSchedule(x => x
                .WithIntervalInSeconds(10)
                .RepeatForever())
            .Build();

            scheduler.ScheduleJob(job, trigger);
        }
        catch (SchedulerException se)
        {
            LogLibrary.Logs.WriteErrorLog(se);
        }

    }

1 个答案:

答案 0 :(得分:0)

参考库存在问题。我已在Visual Blend文件夹中安装了4.x版本,并在我的项目中安装了最新版本。这导致了冲突。当我将服务创建为一个新项目并重新加载它所有的库时。

所以,是的,如果完全有可能在Windows服务中包含Quartz.NET,并且由于某种原因服务停止,那不是因为Quartz。