【问题标题】:Win8 - Unhandled exception in Windows.UI.Xaml.dllWin8 - Windows.UI.Xaml.dll 中未处理的异常
【发布时间】:2012-08-09 09:43:37
【问题描述】:

在调试/运行我的 Metro 应用程序时,我遇到了一些奇怪的行为。 在拖放过程中,屏幕将被刷新。我添加了一些功能来阻止绑定属性在拖放过程中刷新。

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

在 SOME_APP.exe [7785] 中出现未处理的 win32 异常。

(外部调试器不带更多信息)

输出显示:

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

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

【问题讨论】:

  • 它给了你一个非常好的例外——访问冲突。您正在尝试访问或修改不属于您的内存。
  • 是的,似乎是这样,但我没有通过代码进行任何内存寻址。 win8、xaml.dll 和/或 32 位系统与 64 位系统是否存在一些问题?
  • 我不能肯定地说,但我的第一个测试是注释掉禁用刷新的代码并查看错误是否仍然存在。您可能会在不知不觉中破坏某处的内存,这可能会导致此错误。不过,这都是假设性的。如果删除该代码后错误不再发生,您可能需要在其中发布您正在执行的操作,以便我们查找错误。
  • 禁用绑定的代码做了什么。是否因为拖放操作仍在进行中而导致崩溃?
  • 仅供参考,这是候选版本 (RC) 中的一个错误。列表中的拖放功能现在按预期工作。

标签: winapi xaml windows-8 unhandled-exception


【解决方案1】:

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

您收到此异常是因为不存在引用的方法。例如。

  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 不再存在,因为您离开了它。但是您的代表拥有它的地址;所以它尝试执行;并因访问冲突错误而失败。

【讨论】:

    猜你喜欢
    • 2011-11-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-16
    相关资源
    最近更新 更多