首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用FluentScheduler将作业安排在星期一到星期五

如何使用FluentScheduler将作业安排在星期一到星期五
EN

Stack Overflow用户
提问于 2016-08-30 03:59:34
回答 4查看 2K关注 0票数 1

我需要安排一个作业在周一到周五的上午9:00、下午12:00和下午5:00运行。未找到有关FluentScheduler的任何文档。

我可以通过作业的多个(分别为5天)计划来做到这一点,但我们是否可以有一个计划来在给定的时间和日期重复执行此操作?

EN

回答 4

Stack Overflow用户

发布于 2016-11-29 01:39:21

我遇到了同样的问题。FluentScheduler不够健壮,无法处理非常复杂的调度。一个更好的解决方案是使用http://www.quartz-scheduler.net/,它非常灵活,得到了IoC的支持,并且支持大多数的very容器。例如,在我的服务中,我使用:

代码语言:javascript
复制
    config.Service<Service>(sc =>
      { sc.ScheduleQuartzJob(configurator =>
        configurator.WithJob(
        () => JobBuilder.Create<DataLoadJob>().WithIdentity("DataLoad", "Job1").Build())
                        .AddTrigger(() => TriggerBuilder.Create().WithIdentity("DataLoadSchedule", "Job1")
                        .WithSimpleSchedule(builder => builder.WithIntervalInSeconds(10).RepeatForever()).Build()));
             sc.ScheduleQuartzJob(configurator =>
                 configurator.WithJob(
                     () => JobBuilder.Create<DataMergeJob>().WithIdentity("DataMerge", "Job1").Build())
                     .AddTrigger(() => TriggerBuilder.Create().WithIdentity("DataMergeSchedule", "Job1")
                     .WithCronSchedule("0 30 7-20/3 ? * MON-FRI").Build()));
             sc.ConstructUsingSimpleInjector();
             sc.WhenStarted((s, h) => s.Start(h));
             sc.WhenStopped((s, h) => s.Stop(h));
         });

这是一个使用SimpleInjector和Quartz的Topshelf服务的片段。

票数 0
EN

Stack Overflow用户

发布于 2016-12-05 22:00:34

我认为最简单的解决方案是让IJob中的Execute()方法检查入口点是星期几,然后在周六或周日立即退出……

票数 0
EN

Stack Overflow用户

发布于 2019-06-27 05:40:55

代码语言:javascript
复制
public class Example: Registry
{
    public Example()
    {
        Schedule(() =>
        {
            DayOfWeek[] available = new DayOfWeek[] { DayOfWeek.Monday, DayOfWeek.Tuesday, DayOfWeek.Wednesday, DayOfWeek.Thursday, DayOfWeek.Friday };

            if (DateTime.Now.DayOfWeek.IsOn(available) && (DateTime.Now.Hour == 8 && DateTime.Now.Minute == 0))//etc
            {
                //code
            }
        }).WithName("Example").ToRunEvery(0).Hours().At(0).Between(8, 0, 17, 0);
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39214224

复制
相关文章

相似问题

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