Je suis presque désespérée .. Je développe une application de service de terrain pour Windows Mobile 6.1 en utilisant C# et un peu p/Invoquant. (Je pense que je référence environ 50 fonctions natives)Unceschable AccesViolationException
Dans des circonstances normales, cela ne pose aucun problème, mais quand je commence à mettre l'accent sur le GC, je reçois une erreur désagréable 0xC0000005 qui semble inaccessible. Dans mon test je ferme rapidement et ouvre un formulaire de dialogue (le formulaire a fait usage de fonctions natives, mais pour les tests je les ai commentés) et après un moment, le journaliste d'erreur Windows Mobile vient me dire qu'il y avait un fatal erreur dans mon application.
Mon code utilise un try-catch autour du Application.Run(masterForm);
et se connecte à l'événement CurrentDomain.UnhandledException
, mais l'application se bloque toujours. Même lorsque j'attache le débogueur, Visual Studio me dit juste "La connexion à distance à l'appareil a été perdue" quand l'exception se produit.
Puisque je n'ai pas réussi à attraper l'exception dans l'environnement géré, j'ai essayé pour donner un sens au fichier journal d'Error Reporter. Mais cela n'a aucun sens, la seule chose cohérente à propos de l'erreur est l'application où elle se trouve.
Le thread où l'application se produit est inconnu pour moi, le module où l'erreur se produit diffère de temps à temps (j'ai vu mon application.exe, WS2.dll, netcfagl3_5.dll et mscoree3_5.dll), même le code d'erreur n'est pas toujours le même. (La plupart du temps, il est 0XC0000005, mais je l'ai aussi vu une erreur 0x80000002, qui est un avertissement comptable le premier octet?)
J'ai essayé le débogage par bugtrap, mais étrangement cette plante avec le même code d'erreur (0xC0000005). J'ai essayé d'ouvrir le fichier kdmp avec Visual Studio, mais je ne peux pas donner de sens car il ne montre que le code du désassembleur quand j'entre dans l'erreur (sauf si j'ai les bons fichiers .pbb, ce que je fais 't). Idem pour WinDbg. Pour faire une histoire courte: Je n'ai franchement aucune idée de l'endroit où chercher cette erreur, et j'espère que l'âme brillante de stackoverflow le fera. Je suis heureux de fournir du code mais en ce moment je ne sais pas quelle pièce à fournir ..
Toute aide est grandement appréciée!
[EDIT 3 mai 2010]
Comme vous pouvez le voir dans mon commentaire à Hans Je retesté tout le programme après que je décommenté tous les P/Invoque, mais cela n'a pas résolu mon problème. J'ai essayé de reproduire l'erreur avec le moins de code possible et finalement, il semble que l'accès multi-thread est celui qui me pose tous les problèmes.
Dans mon application, j'ai un contrôle utilisateur qui fonctionne comme une liste de défilement de doigt/flick. Dans ce contrôle, j'utilise un bitmap pour chaque élément de la liste en tant que canevas. Le dessin sur cette toile est géré par un thread séparé et quand je désactive ce thread, l'erreur semble disparaître .. Je vais faire d'autres tests à ce sujet et afficherai les résultats ici.
Jetez un oeil à cette question, on dirait qu'il peut être lié: http://stackoverflow.com/questions/724644/ –
Non, mon bloc de capture ne se appelle pas du tout .. – Roy