我在VS中创建了一个Windows服务项目,并在其中配置Quartz.Net以立即运行任务。注册任务的代码运行没有异常,但是就我的调试而言,任务永远不会执行。
我无法确定,因为调试Windows服务是非常不同的。我这样做的方式是从我的代码以编程方式启动调试器。 Quartz.Net在一个单独的线程上运行作业,但我不确定VS2010在调试Windows服务时是否可以看到其他正在运行的线程。
有没有人做过我以前尝试过的事情?任何提示都表示赞赏。
PS。我不想使用Quartz.Net自己的服务。
答案 0 :(得分:6)
作业未执行的最常见原因之一是因为您需要在调度程序实例上调用Start()方法。
http://quartznet.sourceforge.net/faq.html#whytriggerisntfiring
但是,如果我们没有某种代码片段来执行调度程序创建和作业注册,那么很难说问题是什么。
答案 1 :(得分:4)
我发现这有点过时了,但在各种搜索中它出现了很多次!
绝对查看本文,该文章在实例化调度程序时使用XML配置。 http://miscellaneousrecipesfordotnet.blogspot.com/2012/09/quick-sample-to-schedule-tasks-using.html
如果您不想使用XML(动态创建的任务等),请使用以下内容替换上述文章中的“运行”过程:
public void Run()
{
// construct a scheduler factory
ISchedulerFactory schedulerFactory = new StdSchedulerFactory();
_scheduler = schedulerFactory.GetScheduler();
IJobDetail job = JobBuilder.Create<TaskOne>()
.WithIdentity("TaskOne", "TaskOneGroup")
.Build();
ITrigger trigger = TriggerBuilder.Create()
.WithIdentity("TaskOne", "TaskOneGroup")
.StartNow()
.WithSimpleSchedule(x => x.WithIntervalInSeconds(20).RepeatForever())
.Build();
_scheduler.ScheduleJob(job, trigger);
_scheduler.TriggerJob(job.Key);
_scheduler.Start();
}
注意 - 使用Quartz .NET 2.1.2,.NET 4
干杯!
答案 2 :(得分:1)
我之前在Windows服务中成功使用过Quart.NET。服务启动时,我创建了Scheduler Factory,然后获取Scheduler。然后我启动调度程序,它隐式读入我在服务的App.config中指定的配置XML。
Quartz.NET基本设置:http://quartznet.sourceforge.net/tutorial/lesson_1.html
App.config设置问题:http://groups.google.com/group/quartznet/browse_thread/thread/abbfbc1b65e20d63/b1c55cf5dabd3acd?lnk=gst&q=%3Cquartz%3E#b1c55cf5dabd3acd