Aller au contenu
  • Pas encore inscrit ?

    Pourquoi ne pas vous inscrire ? C'est simple, rapide et gratuit.
    Pour en savoir plus, lisez Les avantages de l'inscription... et la Charte de Zébulon.
    De plus, les messages que vous postez en tant qu'invité restent invisibles tant qu'un modérateur ne les a pas validés. Inscrivez-vous, ce sera un gain de temps pour tout le monde, vous, les helpeurs et les modérateurs ! :wink:

Messages recommandés

Posté(e)

**Le Masculin est utilisé seulement afin d'alléger le texte

 

 

Bonjour chers programmeurs,

 

Je migre actuellement de VB 6 à VB 2008 et je suis un peu dans toute la structure des Public et Private et je crois que cela me joue de vilains tours. Comme en ce moment, j'ai un problème d'actualisation de contrôles dans ma form. Je dois mettre à jour un label à partir d'une SUB. Je réussi seulement si j'ai une minuterie qui "scan" ma collection Public dans une classe Public et qui effectue les modifications à la place d'une SUB. Je me dis que c'est un peu "absurde" de faire tourner un Thread pour actualiser l'interface quand l'actualisation est effectuée seulement sous événement.

 

Sans copier tout le code, j'utilise un Objet COM déclaré Public WithEvents en entête du code ma FORM. Lorsque cet ActiveX m'envoi un événement STAT_EVENT (Événement propriétaire à cet Objet) j'appel la SUB RefreshStats. dans RefreshStats, je reçois une exception sur cette ligne:

 

lbl_AgentCom.txt = CStr(int_Count)

Une exception de première chance de type 'System.InvalidOperationException' s'est produite dans System.Windows.Forms.dll

 

Chose étrange, lorsque je passe en mode Débug et que durant l'exécution du code dans la SUB je fais afficher le texte dans la fenêtre d'execution, je reçois une exception:

 

 

?lbl_AgentsCom.Text

Exception runtime levée : Microsoft.VisualStudio.Debugger.Runtime.CrossThreadMessagingException - Une exception 'Microsoft.VisualStudio.Debugger.Runtime.CrossThreadMessagingException' s'est produite

 

Avec un Timer, tout marche nickel.

 

Est-ce que quelqu'un a une piste s.v.p.?

 

Merci

Posté(e)

Euh bah oui logique, tu essaies de modifier un élément de ta form depuis un autre thread, le debugger te le dit clairement...

 

Pour éviter ce problème tu dois utiliser un delegate et la méthode InvokeRequired de ta form.

 

Sinon effectivement, tu as certainement d'autre moyens d'arriver à tes fins mais j'avoue n'avoir pas tout compris dans ton explication.

Rejoindre la conversation

Vous pouvez publier maintenant et vous inscrire plus tard. Si vous avez un compte, connectez-vous maintenant pour publier avec votre compte.
Remarque : votre message nécessitera l’approbation d’un modérateur avant de pouvoir être visible.

Invité
Répondre à ce sujet…

×   Collé en tant que texte enrichi.   Coller en tant que texte brut à la place

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.

  • En ligne récemment   0 membre est en ligne

    • Aucun utilisateur enregistré regarde cette page.
×
×
  • Créer...