Как получить уведомление об изменении даты в приложении .NET WinForms - PullRequest
2 голосов
/ 28 декабря 2010

Я хотел бы указать функцию, которая будет вызываться в моем проекте VB.Net 2005 WinForms в полночь, когда изменяется системная дата.Возможно ли это?

Я знаю, что мог бы сделать это, установив таймер, установив интервал в полночь минус текущее время, затем после первого тика установив интервал в 24 часа.Мне было интересно, есть ли более чистый и простой способ.

Изменить на адрес комментария: я хотел бы знать, когда изменится день, например, с 27 декабря по 28 декабря.Я знаю, что системная дата / время постоянно меняется.

Ответы [ 3 ]

1 голос
/ 28 декабря 2010

Мне не нравится идея таймера / даты по нескольким причинам.Наиболее очевидным является то, что не всегда 24 часа в сутки, а также вам придется периодически перезапускать приложение для повторной синхронизации с часами.(похоже на ошибку Патриот Ракета).

Я бы упростил задачу и просто нажимал на таймер каждую секунду или минуту, или любой самый длинный интервал, который вы можете использовать для точности, необходимой для вашего приложения.

Если вам это нужно, супер точный иЯ не могу запускать событие каждую миллисекунду. Я нажимаю его каждую минуту до последней минуты, а затем запускаю другой таймер с использованием даты.

0 голосов
/ 28 декабря 2010

Вы можете создать экземпляр System.Threading.Timer с периодом в 24 часа и с начальным временем, равным TimeSpan, полученным вычитанием DateTime.Now из полуночи завтрашнего дня (DateTime.Today.AddDays(1)).

0 голосов
/ 28 декабря 2010

Звучит так, как будто вы можете использовать обычное Планирование задач Windows .

Таким образом, вы пишете обычное приложение командной строки, которое при вызове работает в фоновом режиме.Он также может завершиться, если вызывается раньше времени.

Редактировать: В этом случае, почему бы не использовать таймер и покончить с этим?Даже если у вас есть операционная система, сообщающая вам дату, это все равно будет программная реализация (и не намного более эффективная, чем таймер .NET), так почему бы просто не внедрить ее самостоятельно?

Что касается чистоты,это может выглядеть довольно чисто - создайте для него событие, если хотите.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...