Rendimiento de WPF TreeView Refresh

Tengo un trabajador en segundo plano que uso para completar una colección a la que está vinculado mi TreeView. Tengo la GUI que muestra un cuadro de diálogo de progreso mientras se ejecuta el trabajador en segundo plano. Cierro el diálogo de progreso en el evento RunWorkerCompleted del backgroundworker. Todo esto funciona muy bien y como se esperaba.

El problema es que, a menudo, TreeView aún tarda un tiempo en actualizarse después de que se cierra el cuadro de diálogo de progreso. A veces, se han agregado muchos datos a TreeView, por lo que puede tardar hasta 10 segundos en actualizarse. Esto causa frustración y confusión en los usuarios.

  • ¿Por qué tarda tanto la actualización de TreeView?
  • ¿Hay alguna manera de acelerarlo?
  • ¿O para saber cuándo finaliza la actualización/redibujar para poder cerrar el cuadro de diálogo de progreso en lugar de cuando finalice mi trabajador en segundo plano?

Actualización: tengo la virtualización activada.

preguntado el 03 de mayo de 12 a las 19:05

¿A qué tipo de colección está vinculado su árbol? ¿Qué tan compleja es la plantilla de su artículo? ¿Puede describir cómo se implementan su TreeView y ViewModel? -

1 Respuestas

¿Ha intentado perfilar el rendimiento de su aplicación? Hay un par de herramientas para ayudarte a hacer esto. Le permitirán ver qué métodos se están llamando para su proceso de actualización y es posible que pueda detectar algún código que aún se está ejecutando para el proceso de actualización.

Enlaces http://www.red-gate.com/products/dotnet-development/ants-performance-profiler/

http://www.yourkit.com/

http://www.jetbrains.com/profiler/

contestado el 04 de mayo de 12 a las 15:05

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.