Rom*_*man 5 .net c# windows windows-services quartz.net
我在VS中创建了一个Windows服务项目,并在其中配置Quartz.Net以立即运行任务.注册任务的代码运行时没有异常,但是就我的调试所知,任务永远不会执行.
我无法确定,因为调试Windows服务是非常不同的.我这样做的方式是从我的代码以编程方式启动调试器.Quartz.Net在一个单独的线程上运行作业,但我不确定VS2010在调试Windows服务时是否可以看到其他正在运行的线程.
有没有人做过我以前尝试过的事情?任何提示都表示赞赏.
PS.我不想使用Quartz.Net自己的服务.
作业未执行的最常见原因之一是因为您需要在调度程序实例上调用Start()方法.
http://quartznet.sourceforge.net/faq.html#whytriggerisntfiring
但是,如果我们没有某种代码片段来执行调度程序创建和作业注册,那么很难说问题是什么.
我看到这有点过时了,但是在各种搜索中却多次出现!
一定要查看这篇文章,该文章在调度程序实例化时使用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();
}
Run Code Online (Sandbox Code Playgroud)
注 -使用Quartz .NET 2.1.2,.NET 4
干杯!