繁体   English   中英

访问冲突异常 C#

[英]Access violation exception c#

这是我抛出异常的代码,它今天只是随机启动,这是照片:

在此处输入图片说明

这是整个页面代码和错误异常:

 public frmWFDocumentDetail()
    {
        InitializeComponent();

        NavigationInTransition navigateInTransition = new NavigationInTransition();
        navigateInTransition.Backward = new TurnstileTransition { Mode = TurnstileTransitionMode.BackwardIn };
        navigateInTransition.Forward = new TurnstileTransition { Mode = TurnstileTransitionMode.ForwardIn };

        NavigationOutTransition navigateOutTransition = new NavigationOutTransition();
        navigateOutTransition.Backward = new TurnstileTransition { Mode = TurnstileTransitionMode.BackwardOut };
        navigateOutTransition.Forward = new TurnstileTransition { Mode = TurnstileTransitionMode.ForwardOut };
        TransitionService.SetNavigationInTransition(this, navigateInTransition);
        TransitionService.SetNavigationOutTransition(this, navigateOutTransition);

        DataContext = App.ViewModel_WFDocumentDetailItems;
    }

    protected override void OnNavigatedTo(NavigationEventArgs e)
    {
        //**this is how you pass parameters through to a new page**//
        string processID = "-1";
        string processName = "";
        NavigationContext.QueryString.TryGetValue("processID", out processID);
        NavigationContext.QueryString.TryGetValue("processName", out processName);

        App.ViewModel_WFDocumentHeaderItems.LoadData("johnny", processID);

        App.ViewModel_WFDocumentDetailItems.LoadData("johnny");

    }

和访问冲突:

System.AccessViolationException: 试图读取或写入受保护的内存。 这通常表明其他内存已损坏。

我已经阅读了它,有人说它是 nvidia 网络管理器,有人说我必须设置一些设置,例如 Suppress JIT optimization ,如果值没有改变,则忽略 gpu 内存......但没有任何效果? 任何人都可以请给我正确的方向吗?

根据要求,完整的堆栈

在此处输入图片说明

我使用了 taylorjohnl 给我的设置“调试 -> 选项和设置 -> 调试 -> 常规 -> 仅启用我的代码”,然后错误直接出现在语法错误的 xaml 片段上,并修复了它并应用程序再次工作:) 所以违规错误对我来说基本上是一个参考错误,希望这也能帮助其他人,也可以使用silverlight中的表达式混合来调试用户界面中的xaml

我有一个类似的问题,最终通过向 MS 技术支持提交故障转储来解决。 这是他们的回应:

要点是崩溃是 Windows 操作系统附带的 comctl32.dll(Windows 通用控件)5.0 版中的一个已知错误。 此错误不会在通用控件的 5.0 版中修复,因为该版本适用于 Windows XP 之前存在的应用程序。 它已在 comctl32.dll 的 6.0 版中得到修复,该版本包含在 Windows XP 及更高版本中。 请注意,自 Windows XP 以来,每个版本的 Windows 都包含两个版本的 comctl32.dll(5.0 和 6.0)。 旧的只是为了向后兼容非常旧的应用程序。

要解决此问题,您需要更改应用程序以使其选择使用 comctl32.dll 6.0 版。 在 Windows 窗体应用程序中,这是通过在应用程序启动时调用 Application.EnableVisualStyles 方法来完成的。 如果您在 C# 项目中进行开发,则可以通过在应用程序入口点内的 Application.Run 调用之前添加调用来实现。 例如:

    [STAThread]
    static void Main()
    {
        Application.EnableVisualStyles();   //Add this line
        Application.Run(new Form1());
    }

如果您在 Visual Basic .Net 项目中,您可以通过转到您的项目属性,然后选择应用程序属性页上的“启用应用程序框架”和“启用 XP 视觉样式”复选框来选择加入。

一旦你这样做,它应该解决这个特定的访问冲突。

InitializeComponent() 中的代码是什么? 有一些类在其中引用了 null,(主要是事件处理程序)。 一旦触发,它会报告AccessViolation。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM