2012-07-02 49 views

Respuesta

69

Use un temporizador. Hay 3 tipos básicos, cada uno adecuado para diferentes propósitos.

Utilizar solamente en una aplicación de Windows Forms. Este temporizador se procesa como parte del ciclo de mensajes, por lo que el temporizador se puede congelar a alta carga.

Cuando necesite sincronicidad, utilice éste. Esto significa que el evento tick se ejecutará en la secuencia que inició el temporizador, lo que le permite realizar operaciones de GUI sin mucha molestia.

Esta es la más alta potencia temporizador, que dispara las garrapatas en un subproceso de fondo. Esto le permite realizar operaciones en segundo plano sin congelar la GUI o el hilo principal.

En la mayoría de los casos, recomiendo System.Timers.Timer.

+4

Simplemente una adición, en realidad hay algo más que esto, por ejemplo, hay 'DispatcherTimer' (WPF/Silverlight), así como otras herramientas similares a las del temporizador. –

+4

Tenga en cuenta también que el evento transcurrido de System.Timers.Timer se desencadena en el subproceso de la interfaz de usuario si establece SynchronizingObject, de lo contrario, se desencadena en un subproceso de ThreadPool. –

+0

Una cosa a tener en cuenta es que si desea confiabilidad ninguno de estos funciona el 100% del tiempo, particularmente en sistemas con mucha carga. –

11

Utilice un timer. Tenga en cuenta que .NET viene con una cantidad de temporizadores diferentes. This article cubre las diferencias.

+0

MSDN Magazine está muerto. –

+0

Gracias. Enlace actualizado –

36

Para ello, el System.Timers.Timer funciona mejor

// Create a timer 
myTimer = new System.Timers.Timer(); 
// Tell the timer what to do when it elapses 
myTimer.Elapsed += new ElapsedEventHandler(myEvent); 
// Set it to go off every five seconds 
myTimer.Interval = 5000; 
// And start it   
myTimer.Enabled = true; 

// Implement a call with the right signature for events going off 
private void myEvent(object source, ElapsedEventArgs e) { } 

Ver Timer Class (.NET 4.6 and 4.5) para más detalles

enlace
+3

Para el beneficio de los buscadores que buscan una copia rápida y pegar la consola, utilicé el ejemplo de @IvoTops y creé un ejemplo aquí -> https://gist.github.com/HockeyJustin/1161699bd26adb5c054d. – HockeyJ

Cuestiones relacionadas