访问冲突异常c#

时间:2012-11-27 06:15:31

标签: c# access-violation

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

enter image description here

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

 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优化的设置,如果值没有改变则忽略gpu内存......但没有任何作用?有谁可以请我朝正确的方向发送给我?

根据要求,完整堆栈

enter image description here

3 个答案:

答案 0 :(得分:4)

我使用设置taylorjohnl给了我“调试 - >选项和设置 - >调试 - >一般 - >启用我的代码”,然后错误直接到xaml的一块语法错误,繁荣修复它和应用程序再次工作:)所以违反错误对我来说基本上是一个参考错误,希望这也可以帮助其他人,也使用表达混合silverlight来调试UI中的xaml

答案 1 :(得分:0)

我遇到了类似的问题,最终通过向MS Tech Support提交崩溃转储解决了这个问题。以下是他们的回复:

要点是崩溃是comctl32.dll(Windows公共控件)5.0版中的已知错误,它随Windows操作系统一起提供。此错误不会在通用控件的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视觉样式”复选框来选择此项。 / p>

执行此操作后,它应解决此特定访问冲突。

答案 2 :(得分:-1)

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