2014-12-08 3 views
-3

Привет, ребята, я пытаюсь сделать что-то подобное, чтобы создать событие, которое начинает что-то делать, когда наступает новая дата, как это было 2014/01/01, и это 2014/01/02, а затем сделайте некоторые вещи:C# wpf Datetime changed (Новый день наступил) event

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

Что мне делать?

+3

Ваш вопрос совершенно неясно. –

+2

Что вы хотите сделать? Почему бы вам просто не добавить запланированную задачу в Windows для запуска один раз в день? –

ответ

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 
    } 
0

Создание запланированного задания, вероятно, лучший способ действия. Если нет, вы можете (теоретически) использовать Timer класс, установленный в любое время до 00:00:00. Обычно это имеет смысл на более короткие временные интервалы, например «каждые 10 секунд», а не «каждые 24 часа».

Теперь дело в том, что у вас либо длинное (постоянно) работающее приложение, либо у вас есть только один код для выполнения каждые 24 часа. Во втором случае - вам лучше с планировщиком. В случае долговременного приложения, я бы предположил, что он на самом деле что-то делает, кроме ожидания 24 часа в сутки, а затем вы можете использовать таймер или использовать какой-либо способ использования Планировщика (например, через WCF - google: interprocess communication in. net или просто через наблюдателя файловой системы, возможно?)

Смежные вопросы