Я использую System.Timers.Timer в своем приложении WPF. Я хочу понять, как работает Таймер, после того, как компьютер находится в спящем режиме, и спать. Я получаю некоторые странные проблемы с моим приложением, после того как компьютер возобновляется из спящего режима.
Как мне обращаться с таймерами и как они себя ведут, когда компьютер находится в режиме спящего режима/спящего режима?
У меня есть полуночный таймер, который должен работать каждую полуночью до reset значений по умолчанию в пользовательском интерфейсе.
Вот код, который создает таймер:
private void ResetMidnightTimer()
{
// kill the old timer
DisposeMidnightTimer();
_midnightTimer = new Timer();
// scheduling the timer to elapse 1 minute after midnight
_midnightTimer.Interval = (DateTime.Today.AddDays(1).AddMinutes(1) - DateTime.Now).TotalMilliseconds;
_midnightTimer.Elapsed += (_, __) => UpdateRecommendedCollectingTime();
_midnightTimer.Enabled = true;
_midnightTimer.Start();
}
В редакторе страниц пользовательского интерфейса я вызываю метод, который вызывает ResestMidnightTimer() и создает де-факто таймер. После этого таймер просто ждет ночи.
Когда наступает ночное время (на самом деле это 12:01 AM), таймер работает, сбрасывает значения по умолчанию, как ожидалось, а затем удаляет существующий таймер. Наконец, он создает новый полуночный таймер на следующий день. Но если я попытаюсь спящий компьютер в течение этого дня, полуночный таймер не будет работать и не будет reset значения по умолчанию.
Является ли это потому, что в то время как спящий режим просто откладывает обработку события на такое же количество времени, что и спящий?