Krav: Brug ASP.NET Core 6 til at oprette en ny baggrundstjeneste, som regelmæssigt kan polles for at indhente data og bruge denSystem.Timers.TimerTimer polling, tilføjelse af ekstra Monitor-kode for at forhindre gentagen eksekvering samtidig, selvom det opfylder mine forretningsbehov, er ikke elegant nok, og brugen af den nye PeriodicTimer-timer i .NET 6 kan bedre opfylde mine forretningsbehov.
Som udvikler har du måske brugt timere i .NET før. Der findes mange typer timere i .NET i dag, som hver tjener et forskelligt formål. Som følger:
- System.Threading.Timer
- System.Timers.Timer
- System.Windows.Forms.Timer
- System.Web.UI.Timer
- System.Windows.Threading.DispatcherTimer
En ny Timer blev introduceret i .NET 6 - System.Threading.PeriodicTimer, og den største forskel sammenlignet med de tidligere Timers er, at hændelseshåndteringen af den nye PeriodicTimer kan bruges på en mere bekvem asynkron måde, hvilket eliminerer mekanismen med at bruge callbacks og reducerer kompleksiteten ved brug.
.NET 6 introducerede en ny timertype kaldet PeriodicTimer. Hovedformålet med PeriodicTimer er at undgå brug af callbacks.At undgå callbacks sparer os for at håndtere hukommelseslækager, der kan opstå i langvarige operationer, og vi kan skrive asynkron kode i stedet for synkronisere over asynkron for at bruge den metode i callbacks. Du kan have med den nuværende timertype at gøre,Et andet problem er de overlappende callbacks。 Hvis du ikke skriver kode til callback-overlap-scenarier, kan du opleve uventet adfærd i din applikation.
skabePeriodicTimerInstansen er meget simpel, den eneste parameter du skal oplyse er periodens værdi, koden er som følger:
Asynkron timing baggrundsopgavekode:
(Slut)
|