如何用Microsoft.Win32.TaskScheduler.dll设置每月特定周次触发任务
实现每月特定周的计划任务触发
要实现按「每月第N个星期X」这类规则触发任务,你需要使用MonthlyTrigger的**WeeksOfMonth和DaysOfWeek**属性,替代原来的DaysOfMonth属性,以下是具体场景的实现代码:
场景1:每月第二个周日触发
TaskService ts = new TaskService(); TaskDefinition tsDef = ts.NewTask(); // 起始时间设为一个符合规则的日期(示例:2024年1月14日,当月第二个周日) DateTime scheduleDateTime = new DateTime(2024, 1, 14, 23, 59, 0); m_Logger.SendMessage("Trigger Monthly (2nd Sunday)..."); MonthlyTrigger objMonthlyTrigger = new MonthlyTrigger(); // 指定触发的周序数:第二个周 objMonthlyTrigger.WeeksOfMonth = WeekOfMonth.Second; // 指定触发的星期:周日 objMonthlyTrigger.DaysOfWeek = DayOfWeek.Sunday; objMonthlyTrigger.StartBoundary = scheduleDateTime; objMonthlyTrigger.EndBoundary = DateTime.MaxValue; tsDef.Triggers.Add(objMonthlyTrigger);
场景2:每月第三、四个周日和周六触发
TaskService ts = new TaskService(); TaskDefinition tsDef = ts.NewTask(); // 起始时间设为一个符合规则的日期(示例:2024年1月20日,当月第三个周六) DateTime scheduleDateTime = new DateTime(2024, 1, 20, 23, 59, 0); m_Logger.SendMessage("Trigger Monthly (3rd/4th Sat & Sun)..."); MonthlyTrigger objMonthlyTrigger = new MonthlyTrigger(); // 组合指定第三、第四个周(枚举支持按位或操作) objMonthlyTrigger.WeeksOfMonth = WeekOfMonth.Third | WeekOfMonth.Fourth; // 组合指定周六、周日(枚举支持按位或操作) objMonthlyTrigger.DaysOfWeek = DayOfWeek.Saturday | DayOfWeek.Sunday; objMonthlyTrigger.StartBoundary = scheduleDateTime; objMonthlyTrigger.EndBoundary = DateTime.MaxValue; tsDef.Triggers.Add(objMonthlyTrigger);
关键说明
WeeksOfMonth枚举可选值:First/Second/Third/Fourth/Last,支持多值组合DaysOfWeek枚举支持多星期几组合,通过按位或(|)实现
内容的提问来源于stack exchange,提问作者Le ZVince
相关产品推荐
相关产品推荐

