Требования: Используйте ASP.NET Core 6 для создания нового фонового сервиса для регулярного опроса с целью получения данных и их использованияSystem.Timers.TimerОпрос таймеров, добавление дополнительного кода Monitor, чтобы предотвратить повторное выполнение одновременно, хотя это соответствует моим бизнес-потребностям, недостаточно элегантно, а использование нового таймера PeriodicTimer в .NET 6 лучше подходит для моих бизнес-потребностей.
Как разработчик, вы, возможно, уже использовали таймеры в .NET. Сегодня в .NET существует множество типов таймеров, каждый из которых выполняет свою цель. Следующим образом:
- System.Threading.Timer
- System.Timers.Timer
- System.Windows.Forms.Timer
- System.Web.UI.Timer
- System.Windows.Threading.DispatcherTimer
В .NET 6 был введён новый таймер — System.Threading.PeriodicTimer, и главное отличие от предыдущих таймеров заключается в том, что обработка событий нового PeriodicTimer может использоваться более удобно, асинхронно, что устраняет механизм использования обратных вызовов и снижает сложность использования.
.NET 6 представил новый тип таймера под названием PeriodicTimer. Основная цель PeriodicTimer — избежать использования обратных вызовов.Избегание обратных звонков избавляет нас от утечек памяти, которые могут возникнуть в долгосрочных операциях, и мы можем писать асинхронный код вместо синхронизации по асинхрону, чтобы использовать этот метод в обратных коллбах. Возможно, вы имеете дело с текущим типом таймераЕщё одна проблема — перекрывающиеся обратные отсылки。 Если вы не пишете код для сценариев перекрытия обратных вызовов, вы можете столкнуться с неожиданным поведением в приложении.
создаватьPeriodicTimerЭкземпляр очень прост, единственный параметр, который нужно указать — это значение периода, код выглядит следующим образом:
Код фоновой задачи с асинхронным таймингом:
(Конец)
|