0

我需要在安排作业时使用经过网络验证的时间。

解决方案?

Quartz .NET 详细信息 - 我在调查中陷入困境

我找不到 ITrigger 的 StartTimeUtc 属性是如何使用的(使用下面的 StartAt 方法设置)?

var sleepTrigger = (ISimpleTrigger)TriggerBuilder.Create()
            .WithIdentity("SleepTimeTrigger")
            .StartAt(sleepRunTime)
            .WithSimpleSchedule(x => x.WithIntervalInHours(24).RepeatForever())
            .Build();

即,我需要检查使用 StartTimeUtc 时间戳的具体实现,以更改调度源代码/添加一个选项以独立于本地系统时间进行调度并改用网络时间。

4

1 回答 1

1

Quartz 命名空间下有一个静态类,它有两个方法接收一个Func<DateTimeOffset>可用于返回 NTP 调谐日期/时间的方法。它是“官方”的 Quartz 日期/时间源,实现了简单的单元测试,但也可以用于自定义日期/时间。这是一个示例用法:

SystemTime.Now = () => {
    //return your custom datetime here
    /*
    var ntpTime = new NtpTime(server);
    return ntpTime.NowDateTimeOffset;
    */
};

SystemTime.UtcNow  = () => {
    //return your custom datetime here
    /*
    var ntpTime = new NtpTime(server);
    return ntpTime.UtcNowDateTimeOffset;
    */
};

请注意,上面的代码不会编译,您需要实现自己的方法来获取 和 的当前NowDateTimeOffset UtcNow。从 NTP 获取时间的方法有很多,您可以在此处此处找到一些方法。出于性能原因,我建议您的实现缓存当前日期时间并在本地增加它,而不是在每次调用时询问 ntp 服务器。

于 2013-08-25T22:57:26.180 回答