Tenemos una aplicación C# WPF escrita en .NET 4.0, que tiene un enlace de datos relativamente simple y funcionalidad de red.WPF C# Application Performance
El diseño implica algunos "ajustes", incluidos algunos colores de vuelo estacionario, etc.
En 3 máquinas, de una implementación que cubre 20, estamos experimentando algunos problemas de rendimiento muy extraños con la interfaz de usuario.
Efectivamente, después de un reinicio, la aplicación funciona bien, pero después de un cierto tiempo (indeterminado), la interfaz de usuario se vuelve increíblemente lenta. Por ejemplo, colocando el mouse sobre un botón, y habrá un retraso de hasta un par de segundos antes de que se aplique/renderice el estilo de color.
Las máquinas tienen especificaciones casi idénticas. Los controladores de gráficos se han actualizado y la configuración estándar es de dos tarjetas NVidia Quadro 290. Complementariamente, hicimos una aplicación de "prueba" que contenía SOLAMENTE algunos componentes de UI de prueba (incluida la cinta Fluent Ribbon) y ningún código detrás. El problema aún ocurre
He ejecutado el Windows Performance Suite para 'profundizar' en el WPF en tiempo de ejecución, y, curiosamente, la UI vuelve a la capacidad de respuesta normal si la opción 'Desactivar compatibilidad con regiones sucias' está marcada. Mi comprensión es que, en todo caso, ¡esto debería disminuir el rendimiento aún más!
No tengo nada más que probar aquí. Un análisis de rendimiento de DotTrace sugiere que la mayor parte del tiempo de la aplicación se gasta en PresentationFramework.dll.
[EDITAR] Todas las máquinas son Windows XP SP3.
[EDIT] Es posible que esto ocurra en todas las máquinas y que la aplicación no se pueda ejecutar durante el tiempo suficiente como para presentar el problema. Estamos probando esto ahora.
[EDIT] Debo señalar también que estamos experimentando con la revisión detallada here. Se ha instalado en una sola máquina por el momento, y actualizaré en consecuencia.
[EDITAR - 24 horas después] Por lo tanto, dos máquinas han estado utilizando el mismo código durante la noche. En mi máquina (que nunca ha demostrado el problema), después del inicio de sesión inicial la aplicación era muy lenta, pero después de menos de un minuto volvía a la normalidad. (Lo puse en la máquina claramente sacando cosas de la HDD). En la otra máquina (que generalmente demuestra el problema), la aplicación mejoró después de algunos segundos, pero todavía es lenta en comparación con la mía.
[EDIT - 48 horas más tarde] En la máquina de prueba, la aplicación de prueba es ahora totalmente insensible (bloqueado) después de correr durante 48 horas. En la misma máquina, una aplicación WPF 'shell' liviana (que contiene un control de pestañas, algunos botones y algunos paneles y rejillas) sigue funcionando y responde perfectamente. Entonces, algo en estos controles más complejos está causando este problema ... lo que de hecho apunta a desencadenantes (potencialmente) y delega que podría ser la causa raíz. Buscaré un perfil de la aplicación/controles nuevamente. Mientras tanto, ¿alguien tiene algún consejo sobre cómo asegurarse de que la aplicación se "limpia" después de sí misma a intervalos regulares? ¡Porque estamos viendo controles de terceros aquí, así que mis opciones para editarlos son limitadas!
¡Agradecería cualquier consejo que pueda proporcionarse!
¿Es posible proporcionar el código? Algún otro SO'er probablemente también quisiera probar esto. ¿Cuánto tiempo es la menor cantidad de tiempo antes de que aparezcan los problemas? – Default
Puedo proporcionar el código si es necesario ... pero nuestra aplicación de prueba por el momento literalmente implica el uso ÚNICAMENTE de una cinta fluida (descargable desde CodePlex), en una cuadrícula vacía. No hay código detrás aparte de la llamada de inicio obvia. Por supuesto, proporcionaré esto comprimido si eso hiciera la vida más fácil. – Nick
No esperes mucho de un sistema prototipo. Como primer paso verificaría el uso de los delegados. ¿Usas el a menudo? –