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

Вид: 3427|Ответ: 2

[Источник] В .NET 6 используется новый таймер — PeriodicTimer

[Скопировать ссылку]
Опубликовано 02.08.2023 19:12:40 | | |
Требования: Используйте 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Экземпляр очень прост, единственный параметр, который нужно указать — это значение периода, код выглядит следующим образом:

Код фоновой задачи с асинхронным таймингом:

(Конец)





Предыдущий:Ошибки декодирования Base64 существуют во всех версиях .NET
Следующий:.NET/C# общий T-ковариантный выход и инвертор в интерфейсе
 Хозяин| Опубликовано 02.08.2023 20:22:23 |
 Хозяин| Опубликовано 12.11.2023 9:42:28 |
Сервис останавливается, и CancellationToken уведомляет об отмене задачи, в результате чего следует:OperationCanceledExceptionненормальный
Отказ:
Всё программное обеспечение, программные материалы или статьи, публикуемые Code Farmer Network, предназначены исключительно для учебных и исследовательских целей; Вышеуказанный контент не должен использоваться в коммерческих или незаконных целях, иначе пользователи несут все последствия. Информация на этом сайте взята из Интернета, и споры по авторским правам не имеют отношения к этому сайту. Вы должны полностью удалить вышеуказанный контент с компьютера в течение 24 часов после загрузки. Если вам нравится программа, пожалуйста, поддержите подлинное программное обеспечение, купите регистрацию и получите лучшие подлинные услуги. Если есть нарушение, пожалуйста, свяжитесь с нами по электронной почте.

Mail To:help@itsvse.com