Cerințe: Folosiți ASP.NET Core 6 pentru a crea un nou serviciu de background care să songheze regulat pentru a obține date și să îl folosițiSystem.Timers.TimerInterogarea timerului, adăugarea de cod suplimentar Monitor pentru a preveni execuția repetată în același timp, deși răspunde nevoilor mele de business, nu este suficient de elegantă, iar folosirea noului timer PeriodicTimer în .NET 6 poate răspunde mai bine nevoilor mele de business.
Ca dezvoltator, este posibil să fi folosit temporizatoare în .NET înainte. Există multe tipuri de temporizatoare în .NET astăzi, fiecare având un scop diferit. Așa cum urmează:
- System.Threading.Timer
- System.Timers.Timer
- System.Windows.Forms.Timer
- System.Web.UI.Timer
- System.Windows.Threading.DispatcherTimer
Un nou Timer a fost introdus în .NET 6 - System.Threading.PeriodicTimer, iar cea mai mare diferență față de Timerele anterioare este că gestionarea evenimentelor a noului PeriodicTimer poate fi folosită într-un mod asincron mai convenabil, eliminând mecanismul de utilizare a callback-urilor și reducând complexitatea utilizării.
.NET 6 a introdus un nou tip de cronometru numit PeriodicTimer. Scopul principal al PeriodicTimer este de a evita utilizarea callback-urilor.Evitarea callback-urilor ne scutește de scurgerile de memorie care pot apărea în operațiuni pe termen lung, și putem scrie cod async în loc de sync over async pentru a folosi acea metodă în callback-uri. S-ar putea să ai de-a face cu tipul actual de cronometruO altă problemă sunt apelurile care se suprapun。 Dacă nu scrii cod pentru scenarii de suprapunere cu callback, s-ar putea să observi comportamente neașteptate în aplicația ta.
creaTemporizator periodicInstanța este foarte simplă, singurul parametru pe care trebuie să-l furnizezi este valoarea perioadei, codul este următorul:
Cod de sarcină de fundal pentru sincronizarea asincronă:
(Sfârșit)
|