c#wpf日期时间已更改(新的一天到来)事件

时间:2014-12-08 11:36:13

标签: c# wpf

大家好我试图做这样的事情来创建一个事件,当新的日期来临时就像2014/01/01那样开始做事情,它是2014/01/02然后做一些事情:

private void Datetime.now_changed(days)(object sender, RoutedEventArgs e)
    {
           do some stuff;
    }

我该怎么办?

2 个答案:

答案 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或只是通过文件系统观察者可能?)