Anforderungen: Verwenden Sie ASP.NET Core 6, um einen neuen Hintergrunddienst zu erstellen, den regelmäßig abgefragt wird, um Daten zu erhalten, und diese zu nutzenSystem.Timers.TimerTimer-Abfragen, das Hinzufügen zusätzlicher Monitor-Codes, um wiederholte Ausführung gleichzeitig zu verhindern, erfüllt zwar meine geschäftlichen Bedürfnisse, ist aber nicht elegant genug, und die Nutzung des neuen PeriodicTimer-Timers in .NET 6 kann meine Geschäftsbedürfnisse besser erfüllen.
Als Entwickler hast du vielleicht schon mal Timer in .NET verwendet. Es gibt heute viele Arten von Timern in .NET, die jeweils einen anderen Zweck erfüllen. Folgendermaßen:
- System.Threading.Timer
- System.Timers.Timer
- System.Windows.Forms.Timer
- System.Web.UI.Timer
- System.Windows.Threading.DispatcherTimer
Ein neuer Timer wurde in .NET 6 eingeführt – System.Threading.PeriodicTimer, und der größte Unterschied zu den vorherigen Timern besteht darin, dass die Ereignisbehandlung des neuen PeriodicTimer auf eine bequemere asynchrone Weise genutzt werden kann, wodurch der Mechanismus der Rückrufe entfällt und die Komplexität der Nutzung reduziert wird.
.NET 6 führte einen neuen Timer-Typ namens PeriodicTimer ein. Der Hauptzweck von PeriodicTimer ist es, Rückrufe zu vermeiden.Das Vermeiden von Rückrufen erspart uns vor Speicherlecks, die bei Langzeitoperationen auftreten können, und wir können asynchronen Code statt Sync over Async schreiben, um diese Methode bei Callbacks zu verwenden. Vielleicht hast du es mit dem aktuellen Timer-Typ zu tunEin weiteres Problem sind die sich überschneidenden Rückrufe。 Wenn Sie keinen Code für Callback-Überlappungsszenarien schreiben, können Sie unerwartetes Verhalten in Ihrer Anwendung beobachten.
schaffenPeriodicTimerDie Instanz ist sehr einfach, der einzige Parameter, den Sie angeben müssen, ist der Periodenwert, der Code ist wie folgt:
Asynchroner Timing-Hintergrund-Aufgabencode:
(Ende)
|