Requisitos: Utilizar ASP.NET Core 6 para crear un nuevo servicio de antecedentes que consulten regularmente para obtener datos, y emplearloSystem.Timers.TimerEl sondeo por temporizador, añadir código adicional de Monitor para evitar la ejecución repetida al mismo tiempo, aunque se adapta a las necesidades de mi negocio, no es lo suficientemente elegante, y usar el nuevo temporizador PeriodicTimer en .NET 6 puede cubrir mejor las necesidades de mi negocio.
Como desarrollador, puede que hayas usado temporizadores en .NET antes. Hoy en día existen muchos tipos de temporizadores en .NET, cada uno con un propósito diferente. Como sigue:
- System.Threading.Timer
- System.Timers.Timer
- System.Windows.Forms.Timer
- System.Web.UI.Timer
- System.Windows.Threading.DispatcherTimer
Se introdujo un nuevo temporizador en .NET 6 - System.Threading.PeriodicTimer, y la mayor diferencia respecto a los temporizadores anteriores es que la gestión de eventos del nuevo temporizador periódico puede usarse de forma asíncrona más conveniente, eliminando el mecanismo de usar callbacks y reduciendo la complejidad del uso.
.NET 6 introdujo un nuevo tipo de temporizador llamado PeriodicTimer. El propósito principal de PeriodicTimer es evitar usar callbacks.Evitar las devoluciones de llamada nos ahorra tener que lidiar con fugas de memoria que pueden ocurrir en operaciones a largo plazo, y podemos escribir código asíncrono en lugar de sincronizado sobre asíncrono para usar ese método en callbacks. Puede que estés lidiando con el tipo actual de temporizadorOtro problema son las devoluciones de llamada solapadas。 Si no escribes código para escenarios de solapamiento de callback, puedes ver comportamientos inesperados en tu aplicación.
crearTemporizador PeriódicoLa instancia es muy sencilla, el único parámetro que necesitas proporcionar es el valor del periodo, el código es el siguiente:
Código de tarea de segundo plano de temporización asincrónica:
(Fin)
|