2012-11-27 2 views
2

Ceci est mon code qui lance une exception, il est juste au hasard a commencé aujourd'hui ici la photo:exception de violation d'accès C#

enter image description here

Voici l'ensemble du code de la page et l'exception d'erreur:

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"); 

    } 

et la violation d'accès:

System.AccessViol ationException: Tentative de lecture ou d'écriture de la mémoire protégée. C'est souvent une indication que l'autre mémoire est corrompue.

J'ai lu sur le sujet, certaines personnes disent qu'il est gestionnaire de réseau de nvidia, et certaines personnes disent que je dois mettre quelques réglages comme Suppress optimisation JIT, et ignorer la mémoire gpu si la valeur ne change pas ... mais rien ne fonctionne? Quelqu'un peut-il s'il vous plaît s'il vous plaît envoyez-moi dans la bonne direction?

Comme demandé, la pile complète

enter image description here

+1

Pouvez-vous coller la base complète?Cliquez sur le bouton "Voir les détails", puis collez la pile complète (masquer tout nom de société, ou identification d'identification). Cette exception vous donne la dernière ligne 'steppable', si vous allez dans "Debug -> Options et paramètres -> Déboguer -> Général -> Activer juste mon code", vous vous arrêterez à l'emplacement actuel. Cela peut être la différence entre une réponse et aucune réponse. – taylorjonl

+0

cette image est ce que vous avez besoin? :) – Arrie

+1

Man, ne postez pas la pile comme une image de la fenêtre de la montre, c'est complètement inutile. Au lieu de cela, attrapez l'exception, appelez 'ToString()' et affichez le texte renvoyé. – Ran

Répondre

3

J'ai utilisé le paramètre taylorjohnl m'a donné "Déboguer -> Options et paramètres -> Déboguer -> Général -> Activer juste mon code", puis l'erreur est allé à la partie de xaml qui était une erreur de syntaxe, et boom a corrigé et l'application fonctionne à nouveau :) erreur de violation pour moi était fondamentalement une erreur de référence, espérons que cela peut aider d'autres personnes, aussi utiliser expression mélange dans silverlight pour déboguer xaml dans l'interface utilisateur

-1

Quel est le code dans le InitializeComponent()? il y a une classe qui fait référence à null, (principalement un gestionnaire d'événements). Une fois qu'il est déclenché, il signalera AccessViolation.

+0

InitializeComponent est généralement du code généré qui gère l'initalisation de l'interface utilisateur. Il n'a pas modifié ce code à moins de naviguer spécifiquement dans le système de fichiers vers le fichier .g.cs pour apporter des modifications. – taylorjonl

+0

de votre image, l'erreur semble se produire là-bas. Parfois, lorsque vous modifiez le gestionnaire d'événements par vous-même, cela peut provoquer ce problème. –

0

J'ai eu un problème similaire qui à la fin a été résolu en soumettant un vidage sur incident à MS Tech Support. Voici leur réponse:

L'essentiel est que l'accident est un bug connu dans la version 5.0 de comctl32.dll (Windows Common Controls), qui est livré avec le système d'exploitation Windows. Ce bogue ne sera pas corrigé dans la version 5.0 des contrôles communs, car cette version était pour les applications antérieures à Windows XP. Il a depuis été corrigé dans la version 6.0 de comctl32.dll, qui est inclus avec Windows XP et versions ultérieures. Notez que les deux versions de comctl32.dll (5.0 et 6.0) sont incluses dans chaque version de Windows depuis Windows XP. Le plus ancien est juste là pour des raisons de compatibilité ascendante pour de très anciennes applications.

Pour résoudre le problème, vous devez modifier l'application pour l'activer dans la version 6.0 de comctl32.dll. Dans une application Windows Forms, cela est fait en appelant la méthode Application.EnableVisualStyles au démarrage de l'application. Si vous développez au sein d'un projet C#, vous pouvez le faire en ajoutant l'appel avant votre appel Application.Run dans le point d'entrée de votre application. Par exemple:

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

Si vous êtes dans un projet Visual Basic .Net, vous pouvez opter pour cela en allant aux propriétés de votre projet, puis en sélectionnant les cases à cocher « Activer cadre d'application » et « Activer XP Styles visuels » sur la page de propriétés de l'application. Une fois que vous faites cela, il devrait résoudre cette violation d'accès particulière.

Questions connexes