2010-09-10 19 views
5

Tengo una aplicación WPF (.Net 3.5 sp1) que carga un montón de datos en el inicio (tarda unos segundos en iniciarse) pero funciona bien después de que se cargan los datos . Mientras se ejecuta la aplicación, si no la toco durante un tiempo (digamos unas pocas horas) y luego la alternar, se "activa" muy lentamente. Mis preguntas:WPF Aplicación lenta al volver de inactiva

  1. ¿Por qué es eso? ¿Eso es porque .Net desasigna los datos grandes que cargo de la memoria y tiene que recuperarlos de alguna manera?

  2. ¿Qué puedo hacer en mi aplicación para evitar este comportamiento incluso si sé que estaría secuestrando memoria hasta que la aplicación se finalice?

+1

Puñalada en la oscuridad, pero me pregunto si no es el propio sistema operativo el que lanza esa memoria a un archivo de intercambio (memoria virtual), que luego debe leerse desde el disco. – Jay

+1

Usted sabe Jay, puede ser. Me gustaría saber si esa es realmente la razón y lo que puedo hacer para evitar que eso suceda, al menos para esta aplicación (¿quizás para ejecutarla en un modo de prioridad más alta?). Gracias por tu comentario. –

+1

¿Se puede ejecutar un generador de perfiles en esta condición? Sí, recomiendo [EQATEC] (http://www.eqatec.com/tools/profiler/). – Zamboni

Respuesta

0

puedo ver dos formas de salir:

  1. acceso a todos los datos almacenados en caché en un hilo separado de interfaz gráfica de usuario (lo que probablemente sería mucho trabajo para volver a escribir),
  2. añadir un poco de temporizador provocó la llamada eso siempre funcionaría (tal vez solo obtenga algunos datos aleatorios del caché) y mantendrá su aplicación inactiva, evitando que su contenido vaya al archivo de paginación.
+0

Me gusta tu segunda idea. Gracias. –

0

Como Jay sugirió, esto es casi seguro porque los datos de la aplicación se están escribiendo en el archivo de paginación.

Si la computadora está bajo su control, intente apagar el archivo de paginación. Si la computadora tiene mucha memoria RAM y no ejecuta muchos programas a la vez, es posible que no necesite el archivo de paginación.

+0

Hola Roland, la computadora no está bajo mi control. Computadoras de los usuarios –

+0

No hay mucho que puedas hacer entonces. Puede intentar revisar los datos de su aplicación periódicamente y tocar objetos (como lo sugirió Velijkoz), pero no puede tocar todo. Las cosas relacionadas con la interfaz gráfica de usuario seguirán siendo intercambiadas. Windows no intercambia aplicaciones enteras, intercambia páginas de memoria. –

Cuestiones relacionadas