System.Timers.Timer
parece estar en desuso con .NET y ASP.NET Core Core. Intenta usar System.Threading.Timer
en futuras aplicaciones.
EDIT: OK, quiero ser más preciso:
Con el nuevo Marco de base de .NET, Microsoft suspendió algunas tecnologías de .NET Framework. Para entender eso: .NET Core es un marco totalmente nuevo - reescrito, multiplataforma, etc. No quiero profundizar aquí en detalle - por favor, lea el .NET Blog.
En el blog es un buen artículo abundando portar a .NET Core que explica también las dificultades que puede golpear. Una parte de esto es usar el .NET Portability Analyzer Visual Studio Add-In y corregir los errores que recibe.
Para la clase System.Timers.Timer
, dijo, que .NET Framework, se admite versión = v4.6.2, pero .NET Core, Version = v5.0 y .NETPlatform, versión = v5.0 no lo es. Cambios recomendados: Use System.Threading.Timer
.
Así que eso me parece que System.Timers.Timer
se ha ido para .NET Core.
P.S .: Pero podría volver: Microsoft anunció que desea realizar algunos cambios en CoreCLR (el nombre del marco que utiliza para .NET Core) para facilitar el esfuerzo de portabilidad.
Creo que este extracto es esclarecedor: "A diferencia de System.Windows.Forms.Timer, la clase System.Timers.Timer, de forma predeterminada, llamará a su controlador de eventos del temporizador en un hilo de trabajo obtenido del tiempo de ejecución de lenguaje común (CLR) grupo de subprocesos [...] La clase System.Timers.Timer proporciona una manera fácil de lidiar con este dilema: expone una propiedad pública SynchronizingObject. Establecer esta propiedad en una instancia de Windows Form (o un control en un Windows Form) se asegurará de que el código en su controlador de eventos Elapsed se ejecute en el mismo hilo en el que SynchronizingObject fue instanciado. " – mico
De acuerdo con la sección de seguridad de subprocesos de 'Threading.Timer' [artículo de MSDN] (http://msdn.microsoft.com/en-us/library/system.threading.timer%28v=vs.110%29. aspx), es perfectamente seguro para subprocesos ... – Pieter
'System.Threading.Timer' es tan" irónicamente "no seguro para subprocesos como' System.Threading.Thread' y los subprocesos obtenidos a través del conjunto. El hecho de que estas clases no te detengan y administres el uso de la palabra clave 'lock' en sí no significa que estas clases no sean seguras en cuanto a los hilos. También podría decir 'System.Threading.Thread' no es seguro para los hilos, porque es exactamente igual de verdadero. –