大家好我试图做这样的事情来创建一个事件,当新的日期来临时就像2014/01/01那样开始做事情,它是2014/01/02然后做一些事情:
private void Datetime.now_changed(days)(object sender, RoutedEventArgs e)
{
do some stuff;
}
我该怎么办?
答案 0 :(得分:3)
您可以创建一个用于检查日期更改的类:
using System;
using System.Timers;
public class Clock
{
private readonly Timer _timer = new Timer(1000);
private DateTime _yesturday = DateTime.Today;
public event EventHandler NewDay;
public Clock()
{
_timer.Elapsed += Timer_Elapsed;
_timer.Start();
}
void Timer_Elapsed(object sender, ElapsedEventArgs e)
{
if (_yesturday != DateTime.Today)
{
if (NewDay != null) NewDay(this, EventArgs.Empty);
_yesturday = DateTime.Today;
}
}
}
现在我们可以使用:
private void button1_Click(object sender, EventArgs e)
{
var c = new Clock();
c.NewDay += OnNewDay;
}
private void OnNewDay(object sender, EventArgs e)
{
// new day comes
}
答案 1 :(得分:0)
创建计划任务可能是您最好的行动方式。如果不是,你可以(理论上)使用Timer类设置到00:00:00之前的任何时间。通常它对较短的时间跨度有意义,例如每10秒钟一次,而不是每24小时一次。
现在,问题是,您要么拥有一个长期(不断)运行的应用程序,要么只需要每24小时执行一些代码。在第二种情况下 - 您最好使用调度程序。在长时间运行应用程序的情况下,我假设它实际上除了每天24小时等待之外还有其他功能,然后你可以使用Timer,或者有一些方法来利用调度程序(如通过WCF - 谷歌:进程间通信在.net或只是通过文件系统观察者可能?)