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

Windows Forms Discussion :

[VB.NET 2005] thread & récupération d'information d'une form


Sujet :

Windows Forms

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Technicien
    Inscrit en
    Octobre 2003
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Technicien

    Informations forums :
    Inscription : Octobre 2003
    Messages : 41
    Points : 36
    Points
    36
    Par défaut [VB.NET 2005] thread & récupération d'information d'une form
    Bonjour à tous,

    J'ai récupéré dans la faq le code pour créer et utiliser un thread.
    Dans ce thread, j'utilse une procédure qui compte le nombre d'items d'une list box.
    Lorsque j'utilise cette procédure indépendemment du thread, elle me renvoie bien le nombre d'items alors que lorsque je l'utilise dans le thread, elle compte 0 élément de la listbox alors qu'il y en a.
    J'ai placé cette procédure dans un module
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    Public Sub appel_calculer()
            Dim i As Integer = 0, j As Integer
            If frm_automate.lst_fic.Items.Count > 0 Then
                frm_automate.pgb.Value = 0
     
                j = frm_automate.lst_fic.Items.Count()
                frm_automate.pgb.Maximum = j
                While i <= j And frm_automate.flag = True
                    'My.Application.DoEvents()
                    Call calculer()
                    frm_automate.pgb.Value = i
                    i = i + 1
                End While
            End If
        End Sub
    Pourquoi lorsque j'utilise cette procédure dans un thread, le nombre d'item de la liste renvoi 0?

    Merci d'avance pour votre aide.

  2. #2
    Membre expérimenté
    Avatar de Mehdi Feki
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    1 113
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 113
    Points : 1 566
    Points
    1 566
    Par défaut
    Salut Persons,

    Peut etre parce que ton code est un peut compliquer pour calculer le nombre d'items d'une liste !!

    Tu as besoin juste de recuperer lst_fic.Items.Count, pourquoi tu as ecris tout ce code, à vrai dire je n'ai pas trop essayé de comprendre ce que fais ton code.

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Technicien
    Inscrit en
    Octobre 2003
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Technicien

    Informations forums :
    Inscription : Octobre 2003
    Messages : 41
    Points : 36
    Points
    36
    Par défaut
    Ben c'est bien ce que je fais:
    je veux que lorsque le nombre d'items est >0 dans la listebox (If frm_automate.lst_fic.Items.Count > 0 Then.....) je fasse un traitement or quand je déroule en mode pas à pas , je constate que ma listebox contient des éléments mais que dans cette procédure il me dit qu'il y en a 0.

    Je sais que c'est ce code est bon (dans la procédure appel_calculer) car lorsque je l'utilise hors d'un thread, ca fonctionne très bien mais avec un thread par contre ca ne va pas.

  4. #4
    Membre expérimenté
    Avatar de Mehdi Feki
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    1 113
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 113
    Points : 1 566
    Points
    1 566
    Par défaut
    Ok j'ai revu le code , et j'ai quelque questions

    j = frm_automate.lst_fic.Items.Count()
    frm_automate.pgb.Maximum = j
    While i <= j And frm_automate.flag = True
    'My.Application.DoEvents()
    Call calculer()
    frm_automate.pgb.Value = i
    i = i + 1
    End While
    • Deja tu recupere lst_fic.Items.Count(), c'est le resultat que tu cherches
    • frm_automate.flag = True, je ne vois pas comment il est peut devenir False,
    • Que fais Call calculer() ?
    • pgb.Value = i. Quel est le type de pgb ?
    • A la fin de la boucle i va avoir la meme valeur que j


    Fais un breakpoint sur j = frm_automate.lst_fic.Items.Count() et verifie la valeur de j.

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Technicien
    Inscrit en
    Octobre 2003
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Technicien

    Informations forums :
    Inscription : Octobre 2003
    Messages : 41
    Points : 36
    Points
    36
    Par défaut
    et bien non justement, mais problème et que la listebox contient des éléments, mais que lorsque j'utilise ma procédure avec un thread autre que celui généré par la form et bien je récupère 0 dans comme nombre d'élément contenu dans la listbox.

    Dans ma question est:
    Lorsque je génère un thread autre que celui généré par la form, comment puis-je récupéré des informations sur les composants de la form (thread n°1) dans le thread n°2.

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    324
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 324
    Points : 343
    Points
    343
    Par défaut
    Bonjour,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    'ceci permet de manipuler les objet de l'interface a partir d'autres thread il faut le faire avant de lancer le thread
    Control.CheckForIllegalCrossThreadCalls = false
    MonThread.start(appel_calculer)

  7. #7
    Membre expérimenté
    Avatar de Mehdi Feki
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    1 113
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 113
    Points : 1 566
    Points
    1 566
    Par défaut
    Citation Envoyé par ekinox17
    Bonjour,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    'ceci permet de manipuler les objet de l'interface a partir d'autres thread il faut le faire avant de lancer le thread
    Control.CheckForIllegalCrossThreadCalls = false
    MonThread.start(appel_calculer)
    Oui je crois bien que ton code est util parce qu' apparament il accede à un control en ecriture frm_automate.pgb.Value = i, mais puisqu'il n'a repondu à aucune de mes question, je ne peux dans ce cas aider d'avantage.

Discussions similaires

  1. Récupération d'informations d'une page WEB
    Par devl83 dans le forum Web
    Réponses: 3
    Dernier message: 27/02/2009, 18h16
  2. Récupérations d'informations sur une page html
    Par stansoad0108 dans le forum Langage
    Réponses: 14
    Dernier message: 12/03/2008, 12h48
  3. [VB.net 2005] Extraire un binary image à partir d'une base access
    Par WriteLN dans le forum Accès aux données
    Réponses: 1
    Dernier message: 29/01/2007, 09h23
  4. [VB.net 2005] Thread safe call
    Par WriteLN dans le forum Windows Forms
    Réponses: 5
    Dernier message: 19/06/2006, 12h36
  5. [C# express 2005] Récupération d'information dans une BDD
    Par poussinphp dans le forum Windows Forms
    Réponses: 1
    Dernier message: 06/05/2006, 22h25

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