[英]Quartz .NET doesn't fire trigger, Why?
我在.NET应用程序中使用Quartz。 最初,我在Windows服务中使用了它,但是它不起作用,因此我将其移至普通项目中进行测试。 这是Main中的代码:
ISchedulerFactory schedFact = new StdSchedulerFactory();
IScheduler sched = schedFact.GetScheduler();
JobDetail jobDetail = new JobDetail("JobPrueba", null, typeof(JobPrueba));
Trigger trigger = TriggerUtils.MakeMinutelyTrigger(1, 3);
trigger.StartTimeUtc = DateTime.Now;
trigger.Name = "TriggerPrueba";
sched.Start();
sched.ScheduleJob(jobDetail, trigger);
这是JobPrueba:
class JobPrueba : IStatefulJob
{
public JobPrueba() { }
public void Execute(JobExecutionContext context)
{
const string fic = @"C:\prueba.txt";
string texto = DateTime.Now.ToString();
System.IO.StreamWriter sw = new System.IO.StreamWriter(fic, true);
sw.WriteLine(texto);
sw.Close();
System.Console.WriteLine("Hello world");
}
}
它根本什么也没做,当执行Main中的最后一行时,该程序永远不会结束,但是它不会写入文件,也不会在控制台中打印Hello World。
有人知道我在做什么错吗?
我发现这是时代问题。 我生活在一个世界时间UTC + 2的国家/地区,因此当我将触发器的StartTimeUtc设置为DateTime时,现在不用触发器,而不必使用UtcNow,直到两个小时后才触发,我认为它必须触发在执行代码的那一刻。
此外,我设置了一个计时器以记录发生的情况,并在该日志中打印了当前时间(使用DateTime.Now)和触发器的StartTimeUtc,显然它们是相同的,后来的DateTime.Now大于StartTimeUtc 。 如果我打印了DateTime.UtcNow,我已经看到了问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.