运行 Metro 应用程序时出现以下错误:
运行时遇到致命错误。错误地址位于线程 0x279c 上的 0x6e6b9a68。错误代码为 0x80131506。此错误可能是 CLR 中的错误或用户代码的不安全或不可验证部分中的错误。此错误的常见来源包括 COM 互操作或 PInvoke 的用户封送错误,这可能会损坏堆栈。
我很难认为 CLR 有问题。
该应用程序是纯 C#,没有 C++。
我不使用互操作。
我应该看什么?
运行 Metro 应用程序时出现以下错误:
运行时遇到致命错误。错误地址位于线程 0x279c 上的 0x6e6b9a68。错误代码为 0x80131506。此错误可能是 CLR 中的错误或用户代码的不安全或不可验证部分中的错误。此错误的常见来源包括 COM 互操作或 PInvoke 的用户封送错误,这可能会损坏堆栈。
我很难认为 CLR 有问题。
该应用程序是纯 C#,没有 C++。
我不使用互操作。
我应该看什么?
如果您正在构建 Metro 应用程序,请为这种异常情况做好准备,从而导致严重的睡眠不足。在 Microsoft 论坛中,不久前有一个线程,我们似乎隔离了当您与自定义值转换器绑定时发生的问题。真正简单的转换器很好,但有趣的转换器会在看似随机的时间产生这个异常。祝你好运。
Windows 8 仍处于测试阶段。我不确定“buggy”对于尚未发布的软件来说是一个公平的形容词。对于你的问题——在这个阶段他们可能都是错误的。
即使您的应用程序是纯 c#,对 WinRT API 的任何调用都是 c# 和 c++ 之间的互操作。它们之间的互操作层是 CLR 的责任,这就是为什么异常说它可能是 CLR 错误。
每个软件都有错误。如果这个问题是可重现的,你应该这样做:1)将问题缩小到一个测试用例。这也将确保问题不在您身边,而实际上是在运行时。2) 搜索是否没有任何已经发布的错误报告或知识库文章 3) 向微软提交错误报告。
如果崩溃是可重现的,我相信微软会尽最大努力找到并修复错误。