2010-07-16 15 views

Respuesta

46

Puede usar System.Windows.Threading.DispatcherTimer.

System.Windows.Threading.DispatcherTimer dt = new System.Windows.Threading.DispatcherTimer(); 
dt.Interval = new TimeSpan(0, 0, 0, 0, 500); // 500 Milliseconds 
dt.Tick += new EventHandler(dt_Tick); 
dt.Start(); 

void dt_Tick(object sender, EventArgs e) 
{ 
     // Do Stuff here. 
} 
7

DispatchTimer es una buena opción como es Timer.

Vale la pena estar familiarizado con las diferencias y evaluar cuál es más adecuado para usted.

Conveniencia (DispatchTimer para actualizaciones de UI) o Precisión (Temporizador para previsibilidad) es el quid de la decisión.

Timer Class (System.Threading)

DispatcherTimer Class (System.Windows.Threading)

El DispatcherTimer se reevalúa en la parte superior de cada bucle DispatcherTimer.

temporizadores no están garantizados para ejecutar exactamente cuando se produce el intervalo de tiempo, pero se garantiza que no se ejecute antes de que ocurra el intervalo de tiempo. Esto se debe a que las operaciones DispatcherTimer se colocan en la cola DispatcherTimer como en otras operaciones. Cuando la operación DispatcherTimer se ejecuta es dependiendo de los otros trabajos en la cola y sus prioridades.

Si se utiliza un System.Threading.Timer, vale la pena señalar que el temporizador se ejecuta en un subproceso diferente entonces el usuario interfaz (UI) hilo. Con el fin de acceder a los objetos en el hilo de la interfaz de usuario, es necesario para publicar la operación en el DispatcherTimer de la UI thread usando Dispatcher.BeginInvoke. Esto es innecesario cuando se usa un DispatcherTimer.