wpf timer dispatcher freeze

El temporizador de WPF Dispatcher congela mi aplicación



timer freeze (1)

Esto es esperado. su _DoLoop se ejecuta en el mismo hilo que la interfaz de usuario.

de DispatcherTimer Class MSDN

Si se utiliza un Temporizador System.Timers.Timer en una aplicación WPF, vale la pena señalar que System.Timers.Timer se ejecuta en un subproceso diferente y luego en el subproceso de la interfaz de usuario (UI). Para acceder a los objetos en el subproceso de la interfaz de usuario (UI), es necesario publicar la operación en el distribuidor de la secuencia de interfaz de usuario (IU) mediante Invoke o BeginInvoke. Las razones para utilizar DispatcherTimer frente a System.Timers.Timer son que DispatcherTimer se ejecuta en el mismo hilo que el Dispatcher y DispatcherPriority se puede establecer en DispatcherTimer.

Si necesita ejecutar cálculos que consumen tiempo, ejecútelo en otro hilo para mantener la IU receptiva.

Tengo un pequeño problema al utilizar WPF Dispatcher Timer. En cada tic del temporizador, mi aplicación se congela por un momento (hasta que finaliza el método tick del temporizador). Este es mi código:

private DispatcherTimer _Timer = new DispatcherTimer(); _Timer.Tick += new EventHandler(_DoLoop); _Timer.Interval = TimeSpan.FromMilliseconds(1500); _Timer.Start();

¿Hay alguna forma de evitar esto y que mi aplicación funcione sin problemas?