2012-08-09 21 views
8

Tengo un comportamiento extraño al depurar/ejecutar mi aplicación de metro. Durante arrastrar y soltar, la pantalla se actualizará. Agregué algunas funcionalidades para bloquear las propiedades enlazadas de la actualización mientras arrastra y deja en blanco.Win8 - Excepción no controlada en Windows.UI.Xaml.dll

Pero a veces la caída de aplicación, pero en vez de tirar alguna excepción que puedo depurar, todo lo que tengo es una ventana que dice abrir una

Una excepción Win32 externa just-in-time-depurador no controlada producido en SOME_APP.exe [7785].

(El depurador externo no traer más información)

Y la salida dice:

excepción no controlada en 0x05017145 (Windows.UI.Xaml.dll) en SOME_APP.exe: 0xc0000005 : Ubicación de lectura de violación de acceso 0x00000088.

Estoy trabajando en un dispositivo x64. ¿Alguien ha oído hablar de ese problema?

+0

Le dio una excepción perfectamente buena - Infracción de acceso. Está intentando acceder o modificar memoria que no es suya. – steveg89

+0

sí, parece, pero no hago ninguna dirección de memoria por código. ¿Podría haber algunos problemas con win8, xaml.dll y/o sistema de 32 bits frente a 64 bits? – salcosand

+0

No puedo asegurarlo, pero mi primera prueba sería comentar el código que desactiva las actualizaciones y ver si el error persiste. Podrías, sin saberlo, estar corrompiendo la memoria en algún lugar que podría conducir a este error. Esto es todo hipotético sin embargo. Si el error ya no ocurre con ese código eliminado, es posible que desee publicar exactamente lo que está haciendo allí para que podamos buscar errores. – steveg89

Respuesta

11

Si pasa objetos implementados INotifyPropertyChanged, BindableBase heredado o DependencyObject, etc. a través de NavigationParameter; y enlazar luego en la página de navegación (o enlazarlos en la página de navegación) lo más probable es que obtenga este error. No pase ningún objeto excepto el tipo primitivo a través de NavigationParameter mientras navega.

Obtiene esta excepción porque no existen métodos de referencia. Por ejemplo.

  1. Tiene un objeto llamado Categorías que hereda BindableBase.
  2. Lo has vinculado a Home.xaml.
  3. El mecanismo de enlace de Home.xaml suscribió el evento PropertyChanged del objeto Categorías.
  4. Ha navegado por Article.xaml pasando el objeto Categories como el parámetro NavigationParameter.
  5. Has vinculado el objeto Categorías a Article.xaml.
  6. Cuando una propiedad cambia en el objeto Categorías; esa propiedad activará el evento PropertyChanged.
  7. Hay dos suscriptores para ese evento. Home.xaml y Article.xaml, pero Home.xaml ya no existe porque navegaste fuera de él. Pero su delegado tiene la dirección del mismo; entonces intenta ejecutar; y falla con el error de violación de acceso.
Cuestiones relacionadas