Win8 - Windows.UI.Xaml.dll中的未处理异常

时间:2012-08-09 09:43:37

标签: winapi xaml windows-8 unhandled-exception

调试/运行我的metro应用程序时,我有一些奇怪的行为。 在拖拽期间,屏幕将被刷新。我已经添加了一些功能来阻止绑定属性从刷新时拖拽正在进行中。

但有时候应用程序会崩溃,但是我没有抛出一些我可以调试的异常,而是我得到的一个窗口就是打开一个外部即时调试器

  

SOME_APP.exe [7785]中发生了未处理的win32异常。

(外部调试器没有提供更多信息)

输出结果说:

  

SOME_APP.exe中0x05017145(Windows.UI.Xaml.dll)的未处理异常:0xC0000005:访问冲突读取位置0x00000088。

我正在使用x64设备。 有人听说过这样的问题吗?

1 个答案:

答案 0 :(得分:11)

如果您通过NavigationParameter传递实现INotifyPropertyChanged的对象,继承BindableBase或DependencyObject等;然后在NavigatedPage中绑定(或在导航页面中绑定它们),您很可能会收到此错误。导航时不要传递除原始类型以外的任何对象。

您将获得此异常,因为不存在引用的方法。例如。

  1. 您有一个名为Categories的对象,它继承了BindableBase。
  2. 您将其绑定到Home.xaml。
  3. Home.xaml的绑定机制订阅了Categories对象的PropertyChanged事件。
  4. 您导航了Article.xaml,将Categories对象作为NavigationParameter传递。
  5. 您将Categories对象绑定到Article.xaml。
  6. 当属性在Categories对象中更改时;该属性将触发PropertyChanged事件。
  7. 该活动有两名订阅者。 Home.xaml和Article.xaml,但Home.xaml已不再存在,因为您已离开它。但是你的代表持有它的地址;所以它试图执行;并且因访问冲突错误而失败。