¿El evento transcurrido de System.Timers.Timer es efectivamente el mismo que el evento Tick de System.Windows.Forms.Timer?Evento transcurrido v Marque evento?
En circunstancias específicas, ¿hay ventajas de usar uno en lugar de otro?
¿El evento transcurrido de System.Timers.Timer es efectivamente el mismo que el evento Tick de System.Windows.Forms.Timer?Evento transcurrido v Marque evento?
En circunstancias específicas, ¿hay ventajas de usar uno en lugar de otro?
Consulte estos enlaces here y here para una comprensión completa de los temporizadores en .Net framework.
Hay tres tipos de temporizadores.
que personalmente prefiere System.Timers.Timer
ya que es seguro para subprocesos.
como soy un novato, necesito preguntar por qué los hilos del otro no son seguros? – whytheq
@whytheq Thread-safe significa que las instancias de la clase System.Timers.Timer se pueden acceder de forma segura desde varios subprocesos. Otras clases de temporizador enfrentarán problemas en este caso. La seguridad de subprocesos es un problema común en aplicaciones multiproceso. Para una comprensión completa, lea esta serie de artículos. http://www.albahari.com/threading/ – ABH
por lo que en términos de laymens, el temporizador sigue funcionando independientemente de qué otros hilos se estén ejecutando. – whytheq
Las otras respuestas proporcionan una gran cantidad de detalles, pero la diferencia primordial entre los dos temporizadores que usted ha mencionado es que el System.Windows.Forms.Timer
invocará la devolución de llamada en el subproceso de interfaz de usuario, mientras que el System.Timers.Timer
utilizará uno de los hilos de la piscina hilo de núcleo .
Esa es una gran manera de decirlo. –
... entonces 'System.Timers.Timer' es seguro para subprocesos mientras que el temporizador de formularios no? Y si deseo ejecutar procesos paralelos usando un temporizador para comenzar cada proceso, entonces 'System.Timers.Timer' es el mejor temporizador para usar? – whytheq
Depende de sus requisitos de enhebrado. Si el código que está ejecutando el temporizador necesita modificar la GUI, entonces use el temporizador Forms. Además, dado que hay (normalmente) solo un hilo de evento, significa que el controlador de eventos del temporizador de formularios nunca se llamará al mismo tiempo (varias veces al mismo tiempo). Sin embargo, generalmente no debería realizar tareas relacionadas con la GUI en el hilo de la GUI (ya que hace que la GUI responda menos) para que el temporizador de Timers sea mejor, con la advertencia de que ahora es responsable de manejar la concurrencia. – SimonC
El 'System.Threading.Timer' es el único que funcionó para mí en' Windows Server 2008 R2' aunque Timers.Timer funcionó en mi 'portátil con Windows 7'. – Lijo