Тази статия е огледална статия за машинен превод, моля, кликнете тук, за да преминете към оригиналната статия.

Изглед: 3427|Отговор: 2

[Източник] Използва се нов таймер в .NET 6, PeriodicTimer

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

създавамPeriodicTimerИнстанцията е много проста, единственият параметър, който трябва да предоставите, е стойността на периода, кодът е следният:

Код за фонова задача с асинхронно време:

(Край)





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

Mail To:help@itsvse.com