要按照特定的时间和日期启动定时器,您可以使用以下代码:

// 定义一个计时器
System.Timers.Timer timer = new System.Timers.Timer();

// 设置计时器的时间间隔
timer.Interval = 1000;

// 设置计时器的启动时间
DateTime startTime = new DateTime(2021, 10, 1, 9, 0, 0);

// 设置计时器的启动日期为每周一
DayOfWeek startDay = DayOfWeek.Monday;

// 计算下一个启动时间
DateTime nextStartTime = NextWeekday(startTime, startDay);

// 计算下一个启动时间与当前时间的时间差
TimeSpan timeDifference = nextStartTime - DateTime.Now;

// 如果时间差为负数,则加上七天
if (timeDifference < TimeSpan.Zero)
{
    timeDifference = timeDifference.Add(new TimeSpan(7, 0, 0, 0));
}

// 设置计时器的启动时间为下一个启动时间
timer.StartTime = nextStartTime;

// 启动计时器,并在下一个启动时间触发事件
timer.Elapsed += Timer_Elapsed;
timer.Start();

// 计算下一个启动时间的方法
public static DateTime NextWeekday(DateTime start, DayOfWeek day)
{
    int daysToAdd = ((int)day - (int)start.DayOfWeek + 7) % 7;
    return start.AddDays(daysToAdd);
}

// 定时器触发事件的方法
private void Timer_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
{
    // 在此执行定时任务
}

在上面的代码中,您需要设置计时器的时间间隔、启动时间和启动日期。然后,使用NextWeekday方法计算下一个启动时间,并计算下一个启动时间与当前时间的时间差。最后,设置计时器的启动时间为下一个启动时间,并启动计时器。当计时器触发事件时,执行您的定时任务。

C# WPF 定时器 - 按周几和时间启动

原文地址: https://www.cveoy.top/t/topic/oWHq 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录