Požiadavky: Použiť ASP.NET Core 6 na vytvorenie novej služby na pozadí na pravidelné dotazovanie na získavanie dát a používať juSystem.Timers.TimerTimer pollling, pridávanie ďalšieho Monitor kódu na zabránenie opakovanému vykonávaniu súčasne, hoci spĺňa moje obchodné potreby, nie je dostatočne elegantné a použitie nového PeriodicTimer timera v .NET 6 môže lepšie vyhovieť mojim podnikateľským potrebám.
Ako vývojár ste možno už niekedy používali časovače v .NET. Dnes existuje v .NET mnoho typov časovačov, z ktorých každý slúži inému účelu. Takto:
- System.Threading.Timer
- System.Timers.Timer
- System.Windows.Forms.Timer
- System.Web.UI.Timer
- System.Windows.Threading.DispatcherTimer
V .NET 6 bol predstavený nový Timer – System.Threading.PeriodicTimer a najväčším rozdielom oproti predchádzajúcim Timerom je, že spracovanie udalostí nového PeriodicTimeru je možné používať pohodlnejšie asynchrónne, čím sa eliminuje mechanizmus spätných volaní a znižuje sa zložitosť použitia.
.NET 6 zaviedol nový typ časovača nazývaný PeriodicTimer. Hlavným účelom PeriodicTimer je vyhnúť sa používaniu callbackov.Vyhýbanie sa spätným volaniam nás šetrí pred únikmi pamäte, ktoré môžu nastať pri dlhodobých operáciách, a môžeme napísať asynchrónny kód namiesto sync over async, aby sme túto metódu použili pri callbackoch. Možno máte do činenia s aktuálnym typom časovačaĎalším problémom sú prekrývajúce sa callbacky。 Ak nepíšete kód pre scenáre prekrytia spätného volania, môžete vo svojej aplikácii vidieť neočakávané správanie.
vytvoriťPeriodicTimerInštancia je veľmi jednoduchá, jediný parameter, ktorý musíte zadávať, je hodnota periódy, kód je nasledovný:
Kód úlohy na pozadí asynchrónneho časovania:
(Koniec)
|