Инициирование события с использованием таймера на определенный день и время - PullRequest
2 голосов
/ 24 января 2011

Я использую System.Timer для запуска события. В настоящее время я запускаю его каждые 1 час и проверяю, соответствует ли оно настроенному значению (день, время).

Но можно ли вызвать это в определенное время? вроде бы в воскресенье в 12 утра.

Планировщик задач Windows будет более подходящим, но это не вариант.

Заранее спасибо

Ответы [ 3 ]

9 голосов
/ 24 января 2011

Непонятно, почему бы просто не установить интервал таймера на целевую дату / время.Существует ограничение на количество миллисекунд, время может быть до 2 ^ 31 миллисекунд, 27 дней.Вы будете в порядке, пока сможете оставаться в этом диапазоне.

    private static void SetTimer(Timer timer, DateTime due) {
        var ts = due - DateTime.Now;
        timer.Interval = ts.TotalMilliseconds;
        timer.AutoReset = false;
        timer.Start();
    }
0 голосов
/ 24 января 2011

В аналогичной ситуации я использую System.Threading.Timer для достижения этой цели.По сути, я установил время его выполнения для selectedDateTime - DateTime.Now, чтобы оно отмечалось на требуемой дате.
Если вы получите другую дату, вы можете использовать Timer.Change (), чтобы изменить время отметки на новую.Не забывайте утилизировать () таймер, когда он вам больше не нужен!

0 голосов
/ 24 января 2011

Таймер не поддерживает такие интервалы, но вы можете проверять каждые 20 секунд на текущий день и время.

Редактировать Извините, что вы уже это делаете ... почему бы не сделать интервал, равный половине времени, оставшегося при каждой проверке (таймер Зенона)?

...