En una ventana de WPF, tengo un gráfico de líneas que traza datos en tiempo real (gráfico Quinn-Curtis RealTime para WPF). En resumen, para cada nuevo valor, llamo a un método SetCurrentValue (x, y), y luego al método UpdateDraw() para actualizar el gráfico.Desempeño del despachador de WPF (100-200 actualizaciones/seg)
Los datos vienen a través de una conexión TCP en otro hilo. Cada valor nuevo que entra provoca un evento DataReceived, y su manejador debe trazar el valor en el gráfico y luego actualizarlo. Lógicamente, no puedo llamar a UpdateDraw() directamente, ya que mi gráfico está en el subproceso de UI que no es el mismo subproceso que donde ingresan los datos.
Así que llamo Dispatcher.Invoke (nueva Acción (UpdateDraw ())) - y esto funciona bien, bueno, siempre y cuando actualizo max. 30 veces/seg. Al actualizar con más frecuencia, el Dispatcher no puede mantener el ritmo y el gráfico se actualiza más lentamente de lo que ingresan los datos. Lo probé usando una situación de un solo subproceso con datos simulados y sin el Dispatcher no hay problemas.
Por lo tanto, mi conclusión es que el despachador es demasiado lento para esta situación. De hecho, necesito actualizar 100-200 veces/seg!
¿Hay alguna manera de poner un turbo en el Dispatcher, o hay otras formas de solucionarlo? Cualquier sugerencia es bienvenida.
¿Realmente necesita que la tabla se actualice 100/200 veces por segundo? ¿O simplemente obtienes 100/200 paquetes de datos por segundo? –
Gracias por su sugerencia, pero realmente necesitamos 100 actualizaciones/seg. Vea mi comentario a su publicación a continuación. – KBoek
¿Qué tipo de monitor estás usando? La gran mayoría de los monitores solo se actualizan a 60Hz, por lo que no tiene sentido intentar actualizaciones más rápido que eso. Tan pronto como su tasa de datos entrantes exceda la tasa de fotogramas del monitor, su mejor opción es agrupar los datos entrantes y actualizar la IU una vez por cuadro. –