Я не пишу приложение будильника, но это поможет проиллюстрировать мой вопрос.
Скажем, что у меня есть метод в моем приложении, и я хочу, чтобы этот метод вызывался каждый час в час (например, в 19:00, 20:00, 21:00 и т.д.). Я мог бы создать таймер и установить его интервал до 3600000, но в конечном итоге это приведет к сбою синхронизации с системными часами. Или я мог бы использовать цикл while()
с Thread.Sleep(n)
для периодической проверки системного времени и вызова метода, когда будет достигнуто желаемое время, но мне это тоже не нравится (Thread.Sleep(n)
- большой запах кода для меня).
То, что я ищу, - это некоторый метод в .Net, который позволяет мне передать в будущем объект DateTime и делегат метода или обработчик событий, но я не смог найти такую вещь. Я подозреваю, что в этом Win32 API есть метод, но я тоже этого не смог найти.