Tengo una aplicación de visor de base de datos WPF: Es una ventana principal simple que contiene un control de usuario con una cuadrícula de datos que muestra los datos extraídos de una base de datos SQLite.
El problema es que esta aplicación tarda 6 segundos en iniciarse hasta que se pueda utilizar.Mejorar el tiempo percibido de inicio de la aplicación WPF
Intenté construir el control de usuario (y haciendo toda la carga de datos) en el constructor de la ventana principal:
La pantalla de bienvenida se mostrará 5s esta manera, a continuación, seguido por 1s de ventana principal de vacío hasta que la aplicación es listo para ser usado.
Los usuarios dijeron que tarda demasiado hasta que sucede algo (visualmente).
Luego moví la creación del control de usuario (y la carga de datos) al controlador de eventos cargado de la ventana principal: La pantalla de inicio mostrará 3s, seguido de 3s de ventana principal vacía hasta que la aplicación esté lista.
Los usuarios dijeron que es "mejor", pero no les gusta el hecho de que una ventana principal a medio terminar se muestre en estado desactivado durante tanto tiempo.
¿Hay algún consejo general sobre el tiempo de carga de aplicación percibido o hay alguna otra recomendación sobre cómo se puede mejorar esta situación?
Creo que lo ideal sería que la ventana principal se muestre lo más rápido posible, junto con un reloj de arena o una ruleta hasta que se carguen los datos. Pero entonces no puedo simplemente mover la creación de control de usuario a un trabajador de segundo plano ya que esto se haría con el hilo equivocado.
¿Alguien tiene alguna sugerencia para este problema?
Edit:
Tenga en cuenta que en este momento acabo de asignar una consulta LINQ-to-EF como el origen de datos de la cuadrícula.
Una posible mejora puede ser para cargar estos datos en una tabla de datos en segundo plano y asignar sólo una vez cargado ...
Edit2: estoy usando .NET 4 con System.Data.SQLite y EF4 para cargar los datos. Hay más o menos 4000 filas y 30 columnas.
¿Cuántos datos está cargando de la base de datos? ¿Cómo está cargando los datos? ¿Utiliza un ORM (si es así, cuál?) O simplemente ADO.NET? – alimbada
Eduque a los usuarios que están sucediendo muchas cosas. Verifique lo que realmente está sucediendo y optimícelo según corresponda. Una pantalla de inicio de sesión, o salpicadura extendida (con alguna animación ondulada/barra de progreso) podría ser exactamente lo que están buscando. – CodingBarfield
@alimbada: He editado la pregunta para incluir esta información. Pero es más una cuestión general que vinculada a Entity Framework, etc. ADO.NET o cualquier ORM se tomará su tiempo para cargar los datos, también puede reemplazar esto con Thread.Sleep (..). La pregunta es más sobre cómo lidiar con este tipo de situación. – Marc