Вопрос

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

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

Это было полезно?

Решение

Если ваш вопрос заключается в: "Как мне выполнять делегирование каждую полную секунду / минуту / час?"

Для минутных и часовых интервалов вы могли бы сделать что-то вроде показанного в моем ответе на этот вопрос SO:

Это должно быть довольно точно, но не с точностью до миллисекунды.

Для секундных интервалов я бы выбрал Таймер с простым интервалом в 1 секунду.С точки зрения пользователя, я думаю, что нет большой разницы, выполняется ли действие в xx: xx: xx.000 или в xx: xx:xx.350.

Другие советы

Вы можете подписаться на SystemEvents.TimeChanged . Это срабатывает при изменении системных часов.

Я решил это в приложении для форм, установив интервал (1000 - DateTime.Now.Millisecond)

        _timer1 = new System.Windows.Forms.Timer();
        _timer1.Interval = (1000 - DateTime.Now.Millisecond);
        _timer1.Enabled = true;
        _timer1.Tick += new EventHandler(updateDisplayedTime);

и в обработчике событий сбросьте интервал, чтобы предотвратить смещение.

        <handle event>
        _timer1.Interval = (1000 - DateTime.Now.Millisecond);
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top