You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.20 16:22:10