IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB.NET Discussion :

Source non disponible et graphics.CopyFromScreen


Sujet :

VB.NET

  1. #1
    Nouveau membre du Club

    Inscrit en
    Octobre 2007
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 33
    Points : 36
    Points
    36
    Par défaut Source non disponible et graphics.CopyFromScreen
    Bonjour,

    J'ai une application qui s'arrête de temps en temps à cause d'une erreur en dehors de mon code, et je n'arrive pas à en trouver la cause.

    l'erreur est
    'Click.vshost.exe' (Managé (v4.0.30319))*: 'C:\Windows\Microsoft.Net\assembly\GAC_MSIL\mscorlib.resources\v4.0_4.0.0.0_fr_b77a5c561934e089\mscorlib.resources.dll' chargé
    Une exception de première chance de type 'System.NullReferenceException' s'est produite dans System.Windows.Forms.dll
    Une exception non gérée du type 'System.NullReferenceException' s'est produite dans System.Windows.Forms.dll
    Informations supplémentaires*: La référence d'objet n'est pas définie à une instance d'un objet.
    La fenêtre qui est ouverte par le débogueur indique :

    Source non disponible
    Il manque des informations source dans les informations de débogage de ce module
    Vous pouvez afficher le code machine dans la fenêtre Code Machine. ...
    Personnellement, aller déboguer le code machine de microsoft, ça me tente moyen...

    C'est une application qui dispose de plusieurs timers. Mais l'erreur ne se produit pas dans le code d'un des timers
    La seule chose bizarre qui se produit pendant l'exécution de mon code est l'erreur suivante :

    Une exception de première chance de type 'System.ComponentModel.Win32Exception' s'est produite dans System.Drawing.dll
    Ceci se produit sur la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ogfxSS.CopyFromScreen(New Point(0, 0), New Point(0, 0), New Size(oLargeur, oHauteur), CopyPixelOperation.SourceCopy)
    La déclaration de l'objet est :
    Le numéro de l'erreur levée est : -2147467259 et sa description est "Opération réussie"
    J'ai donc un bloc try catch qui laisse le programme finir quand l'exception se produit

    Le programme fonctionne donc très bien pendant un certain temps, puis continue de fonctionner en levant régulièrement cette exception, puis s'arrête.

    En fait, les deux erreurs n'ont peut-être rien à voir mais je n'ai pas d'idée sur ce qu'il faut faire pour trouver l'origine de la première.

    Merci de votre aide

    Pierre

  2. #2
    Membre actif
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juin 2011
    Messages
    95
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2011
    Messages : 95
    Points : 264
    Points
    264
    Par défaut
    Bonjour,

    Donc si je comprends bien, l'exception se produit qu'après un certain temps, et ce de façon récurrente?
    Quand est appelée la méthode contenant ce bloc de code CopyFromScreen? Est-ce que tu fais une action particulière pendant que le programme tourne?

  3. #3
    Nouveau membre du Club

    Inscrit en
    Octobre 2007
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 33
    Points : 36
    Points
    36
    Par défaut
    Effectivement, l'erreur se produit après plusieurs heures (en fait je n'ai pas mesuré, plus d'une heure, moins de 8) de fonctionnement sans interruption. Et c'est systématique si je laisse tourner une nuit.

    La méthode est appelée depuis trois endroits dans mon code. J'y passe de façon plus ou moins régulières (un endroit toutes les 15 minutes, les deux autres de façon plus aléatoire mais moins d'une fois par heure). Mes traces montrent que la méthode peut être appelée des trois endroits sans que l'exception soit levée.
    La méthode n'a pas de paramètre donc ce qui change c'est quelque chose dans l'état global de l'application. Le CopyFromScreen est la première instruction de la méthode et ses paramètres ne changent pas d'un appel à l'autre (... je rajoute une trace pour vérifier les valeurs de oLargeur et oHauteur, mais une recherche prouve qu'ils ne sont affectés que dans le new)

    L'erreur ne semble pas se produire si j'interagie de temps en temps avec l'application (maintenant, il est possible que parmi ces actions, il y ai un arrêt / relance, en ce moment par exemple j'ai tendance à rajouter des traces) et de façon systématique si elle est laissée à son fonctionnement pendant plusieurs heures.

    Voilà... Je ne sais pas si ça aide beaucoup.

  4. #4
    Membre actif
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juin 2011
    Messages
    95
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2011
    Messages : 95
    Points : 264
    Points
    264
    Par défaut
    En fouillant sur le net ce matin pour ton problème, une personne avait le même souci que toi... lorsque l'écran est verrouillé. Est-ce que ton PC le fait pendant la nuit?
    Pour info, le topic dont je te parle : http://social.msdn.microsoft.com/For...forum=netfxbcl

  5. #5
    Nouveau membre du Club

    Inscrit en
    Octobre 2007
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 33
    Points : 36
    Points
    36
    Par défaut
    Alors, j'ai des informations supplémentaires car pour la première fois l'erreur vient de se produire suite à une manipulation de ma part :

    Comme d'habitude, pour intervenir j'ai provoqué, par l'appui d'une touche, l'arrêt de deux timers, et pof ! ça plante.

    Première constatation : le dernier appel à la fonction CopyFromScreen datait de plus de 5 minutes
    Deuxième constatation : l'exception sur cette fonction ne s'était pas produite

    Donc le plantage n'a rien à voir avec l'exception dans System.drawing.dll
    Il reste, Beowulf, que à lire ton lien, il y a une cause qui devient évidente à cette exception : il faut que je désactive l'économie d'énergie sur le moniteur.

    Ensuite, on ne peut pas être certain que c'est mon action qui a provoqué l'erreur : avec plusieurs timers donc plusieurs thread, si ça plante quelque part, peut-être que certains timers continuent de fonctionner et mes traces continuent.

    Si c'est mon action qui a produit l'erreur, le code éxécuté est très simple : la seule action significative est l'arrêt de 2 timers par la mise de la propriété enabled à false

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
            Off = True
            TM_Click.Enabled = False
            TM_SendKeys.Enabled = False
            RB_Rien.Checked = True
            Label1.Text = "Off"
    Si ce n'est pas mon action qui a engendré le problème, alors la seule source d'information est la pile d'appel, je ne l'avais pas copiée car elle est plutôt indigeste et je n'ai pas pu en tirer grand chose
    > System.Windows.Forms.dll!System.Windows.Forms.Internal.WindowsGraphics.FromGraphics(System.Drawing.Graphics g, System.Windows.Forms.Internal.ApplyGraphicsProperties properties) + 0x39 octets
    System.Windows.Forms.dll!System.Windows.Forms.Control.PaintBackColor(System.Windows.Forms.PaintEventArgs e, System.Drawing.Rectangle rectangle, System.Drawing.Color backColor) + 0xa4 octets
    System.Windows.Forms.dll!System.Windows.Forms.Control.PaintBackground(System.Windows.Forms.PaintEventArgs e, System.Drawing.Rectangle rectangle, System.Drawing.Color backColor, System.Drawing.Point scrollOffset) + 0xde octets
    System.Windows.Forms.dll!System.Windows.Forms.Control.PaintBackground(System.Windows.Forms.PaintEventArgs e, System.Drawing.Rectangle rectangle) + 0x61 octets
    System.Windows.Forms.dll!System.Windows.Forms.Control.OnPaintBackground(System.Windows.Forms.PaintEventArgs pevent) + 0x5a octets
    System.Windows.Forms.dll!System.Windows.Forms.Control.PaintWithErrorHandling(System.Windows.Forms.PaintEventArgs e, short layer) + 0x6d octets
    System.Windows.Forms.dll!System.Windows.Forms.Control.WmPaint(ref System.Windows.Forms.Message m) + 0x2c1 octets
    System.Windows.Forms.dll!System.Windows.Forms.Control.WndProc(ref System.Windows.Forms.Message m) + 0x348 octets
    System.Windows.Forms.dll!System.Windows.Forms.GroupBox.WndProc(ref System.Windows.Forms.Message m) + 0x35 octets
    System.Windows.Forms.dll!System.Windows.Forms.Control.ControlNativeWindow.OnMessage(ref System.Windows.Forms.Message m) + 0x11 octets
    System.Windows.Forms.dll!System.Windows.Forms.Control.ControlNativeWindow.WndProc(ref System.Windows.Forms.Message m) + 0x39 octets
    System.Windows.Forms.dll!System.Windows.Forms.NativeWindow.DebuggableCallback(System.IntPtr hWnd, int msg, System.IntPtr wparam, System.IntPtr lparam) + 0x5e octets
    [Transition Natif à Managé]
    [Transition Managé à Natif]
    System.Windows.Forms.dll!System.Windows.Forms.Application.ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop(System.IntPtr dwComponentID, int reason, int pvLoopData) + 0x24d octets
    System.Windows.Forms.dll!System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(int reason, System.Windows.Forms.ApplicationContext context) + 0x155 octets
    System.Windows.Forms.dll!System.Windows.Forms.Application.ThreadContext.RunMessageLoop(int reason, System.Windows.Forms.ApplicationContext context) + 0x4a octets
    System.Windows.Forms.dll!System.Windows.Forms.Application.Run(System.Windows.Forms.ApplicationContext context) + 0x18 octets
    Microsoft.VisualBasic.dll!Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.OnRun() + 0x81 octets
    Microsoft.VisualBasic.dll!Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.DoApplicationModel() + 0x103 octets
    Microsoft.VisualBasic.dll!Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.Run(string[] commandLine) + 0x61 octets
    [Transition Natif à Managé]
    [Transition Managé à Natif]
    mscorlib.dll!System.AppDomain.ExecuteAssembly(string assemblyFile, System.Security.Policy.Evidence assemblySecurity, string[] args) + 0x6b octets
    Microsoft.VisualStudio.HostingProcess.Utilities.dll!Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly() + 0x27 octets
    mscorlib.dll!System.Threading.ThreadHelper.ThreadStart_Context(object state) + 0x6f octets
    mscorlib.dll!System.Threading.ExecutionContext.RunInternal(System.Threading.ExecutionContext executionContext, System.Threading.ContextCallback callback, object state, bool preserveSyncCtx) + 0xa7 octets
    mscorlib.dll!System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext executionContext, System.Threading.ContextCallback callback, object state, bool preserveSyncCtx) + 0x16 octets
    mscorlib.dll!System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext executionContext, System.Threading.ContextCallback callback, object state) + 0x41 octets
    mscorlib.dll!System.Threading.ThreadHelper.ThreadStart() + 0x44 octets
    [Transition Natif à Managé]
    En tout cas merci pour ton lien qui même s'il ne résout pas le problème, en éclairci un aspect.

Discussions similaires

  1. [XL-2003] Source externe Oracle: clic droit Paramètres non disponible
    Par debdev dans le forum Excel
    Réponses: 0
    Dernier message: 07/07/2011, 12h17
  2. Réponses: 6
    Dernier message: 10/07/2007, 10h43
  3. Imprimante non disponible dans QuickReport 3.0
    Par Writer dans le forum EDI
    Réponses: 1
    Dernier message: 23/05/2005, 10h30
  4. [TOMCAT] ressource non disponible
    Par mousstik dans le forum Tomcat et TomEE
    Réponses: 3
    Dernier message: 12/10/2004, 12h45
  5. [D8] Application serveur non disponible
    Par Keke des Iles dans le forum EDI
    Réponses: 4
    Dernier message: 27/09/2004, 12h06

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo