首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >运行连续触发3次的Quartz.net作业--应该只执行一次

运行连续触发3次的Quartz.net作业--应该只执行一次
EN

Stack Overflow用户
提问于 2011-03-15 06:56:45
回答 1查看 1K关注 0票数 0

我使用Quartz编写了以下代码来调度重启作业。代码为一周中的每一天(由用户选择)设置一个触发器。因此,该作业应该能够每天最多运行一次。但是,当我测试它时,它会连续运行三次,而不是只运行一次。有什么想法吗?

代码语言:javascript
复制
private void ScheduleJob(Server server)
{
    bool jobScheduled = false;
    JobDetail job = new JobDetail(server.ServerName, JOB_GROUP, typeof(RebootJob));
    job.JobDataMap.Add("Server", server);
    // Create a trigger for each day of the week on which this schedule falls
    for(int i=0; i < 7; i++)
    {
        DayOfWeek dayOfWeek = (DayOfWeek)i;
        DateTime? jobStartTime = server.GetNextScheduledRebootDateAndTime();
        if(server.isScheduledOnDayOfWeek(dayOfWeek) && jobStartTime.HasValue)
        {
            SimpleTrigger trigger = new SimpleTrigger(
                String.Format("{0}.{1}", server.ServerName, dayOfWeek.ToString()),
                JOB_GROUP,
                jobStartTime.Value.ToUniversalTime(),
                null,
                SimpleTrigger.RepeatIndefinitely,
                TimeSpan.FromDays(7 * (double)server.RebootFrequency)
            );
            if(!jobScheduled)
            {
                ManagementService.Instance.Scheduler.ScheduleJob(job, trigger);
                jobScheduled = true;
                // Add server to list of servers with a reboot schedule
                m_RebootableServers.Add(server.ServerName, server);
            }
            else // A job has already been schedule, just append triggers to it
            {
                trigger.JobName = job.Name;
                trigger.JobGroup = job.Group;
                ManagementService.Instance.Scheduler.ScheduleJob(trigger);
            }
        }
    }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-03-15 07:24:34

看起来您正在将每个触发器设置为同时触发并具有相同的时间间隔。

遍历"i“的" for”循环没有考虑到"server.GetNextScheduledRebootDateAndTime()“总是返回相同的”下一次“重启时间。我猜您正在测试的服务器被配置为在一周中的3天重新启动,并且所有触发器都被设置为以7天的重复间隔同时启动。

如果您设置为使用SimpleTrigger,那么您需要将触发器的开始时间与您希望安排重启的星期几相关联。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5305619

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档