Изисквания: Използвайте 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 е да се избегнат използването на обратни позиви.Избягването на обратни повиквания ни спестява от проблеми с изтичания на памет, които могат да възникнат при дългосрочни операции, и можем да пишем асинхронен код вместо sync over async, за да използваме този метод при обратно обаждане. Може би имате работа с текущия тип таймерДруг проблем са припокриващите се обратни позиви。 Ако не пишете код за сценарии на припокриване на callback, може да видите неочаквано поведение в приложението си.
създавамPeriodicTimerИнстанцията е много проста, единственият параметър, който трябва да предоставите, е стойността на периода, кодът е следният:
Код за фонова задача с асинхронно време:
(Край)
|