2011-05-23 20 views
6

Tengo una aplicación que funciona bien en el emulador de dispositivo pero en el dispositivo real se bloquea después de un tiempo. Puede ocurrir después de algunos minutos también después de 1-2 horas. El problema ocurre tanto con el dispositivo solo o conectado a Visual Studio.Qué puede causar que una aplicación WP7 se cuelgue sin excepción

El punto es que no se lanza ninguna excepción, VS simplemente informa que se perdió la conexión. Comprobé si estoy usando demasiada memoria pero ese no es el caso (http://stackoverflow.com/questions/4239193/whats-causing-my-wp7-app-to-crash).

¿Qué puede hacer que las aplicaciones se cuelguen sin lanzar excepciones?

Respuesta

4

Se puede bloquear sin una excepción visible en un Stackoverflow.

Al depurar, puede detectar una excepción agregando un controlador de eventos al Application.UnhandledException y escribiendo los detalles de la excepción en el método Debug.WriteLine. El resultado es visible en la ventana Visual Studio Output/Debug.

private void OnAppUnhandledException(object sender, ApplicationUnhandledExceptionEventArgs e) 
    { 
     Debug.WriteLine(e.ExceptionObject.ToString()); 
    } 
+0

¿Esto solo se aplica a WP7? Porque el año pasado estaba depurando una aplicación que se bloqueó debido a una StackOverflowException y VS simplemente se rompió como con cualquier otra excepción no controlada. – Zmaster

+0

de acuerdo con el enlace no hay excepción lanzada en stackoverflow desde C# 2.0 – thumbmunkeys

+0

Acabo de probar esto. En .NET 4, se lanza StackOverflowException e incluso si no es atrapada por la instrucción try/catch, VS se rompe. En una aplicación WP7, la aplicación falla y VS pierde la conexión. Parece que debería trabajar en esta dirección :) – Zmaster

1

Podría ser que el dispositivo phsycal no coincida exactamente con la configuración de la emulación. Puede estar enviando un error a una secuencia de salida que no existe en el dispositivo o enviándola a algo que es local para el emulador y remota para el dispositivo.

Además, es posible que solo satisfaga las diferentes condiciones que lo llevan a una salida limpia.

Probablemente el emulador esté funcionando limpio en comparación con todas las aplicaciones en segundo plano en muchos dispositivos.

El registro y la depuración son sus amigos.

Tu pregunta es interesante, pero le faltan detalles.

2

Puede obtener un bloqueo que no se detecta si ocurre en un subproceso no relacionado con la interfaz de usuario. Verifica tus llamadas asincrónicas.

Además, cualquier error en el código que se ejecuta en respuesta a una acción en un elemento del botón de la barra de la aplicación o elemento del menú podría haber causado este comportamiento.

0

He tenido algunas instancias de xaml no válido bloqueando la aplicación.

Puede cambiar la configuración en Visual Studio para excepciones para romper todas las excepciones para rastrear lo que está sucediendo.

Cuestiones relacionadas