111,097
社区成员




public void Init(DateTime target)
{
SetInterval(target);
Timer.Elapsed += (s, e) =>
{
SetInterval(target);
};
}
private void SetInterval(DateTime target)
{
Timer.Stop();
var now = DateTime.Now;
if (now >= target)
{
//定时结束之后,你要执行的代码
//......................
SetInterval(DateTime.Now.Date.AddDays(1).AddHours(12)); //第二天12点再执行
}
else if (now < target.AddHours(-1))
{
Timer.Interval = 3600000; //1小时后才触发一次定时器
Timer.Start();
}
else
{
Timer.Interval = target.Subtract(now).TotalMilliseconds;
Timer.Start();
}
}
不要抄代码。代码要能看成是很简单的“大白话”,了解代码背后的逻辑,而不是稀里糊涂的代码。