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 :

Utilisation des threads


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Février 2010
    Messages
    103
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 103
    Par défaut Utilisation des threads
    Bonjour,

    J'ai utilisé un thread pour remplir une datagridview, mais ceci engendre le blocage de l'ascenseur du DataGridView
    Est ce que vous pouvez m'aider ?

    Merci

  2. #2
    Membre actif
    Inscrit en
    Octobre 2006
    Messages
    62
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 62
    Par défaut
    Slt

    C'est bizarre que ca te bloque la scrollbar. Ca te le bloque pendant le chargement ou une fois terminer?

    ++

  3. #3
    Membre Expert
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 103
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 103
    Par défaut
    rien d'anormal en fait.

    créer des threads c'est bien, mais bien gérer les intéractions avec l'UI c'est mieux.
    il faut savoir que les threads n'ont pas le droit d'intervenir sur les winforms, enfin sur les contrôles fenêtrés.

    Ainsi un thread n'a pas le droit de venir perturber le déroulement de l'interface graphique et il n'a donc pas le droit de venir modifier les propriétés des divers contrôles fenêtrés.

    voici un exemple de code qui permet de gérer ce problème de cross-threading.

    dans ta form où se situe ta DGV :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
        Public Delegate Sub Proc(ByVal sender As Object, ByVal e As DataTable)
        Public Sub FillDGV(ByVal invoker As Object, ByVal dt As DataTable)
            If invoker Is Nothing Then
                Me.Invoke(New Proc(AddressOf FillDGV), Me, dt)
            Else
                Me.DGV.SuspendLayout()
                Me.DGV.DataSource = dt
                ' ici tu défini les colonnes visibles et invisible, celles qui sont readonly ou pas si certaines sont en écritures et pas d'autres...
                Me.DGV.ResumeLayout()
            End If
        End Sub
    et dans ton thread
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    ...
    Dim dt = New DataTable
     
    ' ta boucle pour remplir la dt plutôt que de remplir directement la datagridview
     
    MyForm.FillDGV(Nothing, dt)

  4. #4
    Membre confirmé
    Inscrit en
    Février 2010
    Messages
    103
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 103
    Par défaut
    Merci Monsieur, je vais essayer ca

  5. #5
    Membre confirmé
    Inscrit en
    Février 2010
    Messages
    103
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 103
    Par défaut
    Citation Envoyé par midou256 Voir le message
    Merci Monsieur, je vais essayer ca
    J'ai un petit probleme
    Suite a l'exécution de mon thread, ma DataGrid est vide je ne sais pas pourquoi ???
    Est ce que vous pouvez m'aider ???
    Merci

  6. #6
    Membre Expert
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 103
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 103
    Par défaut
    est ce que ton thread à bien rempli le dataset et la bien fourni à la méthode remplissage synchronisée dans le thread UI ?

    c'est la question à ce poser, n'hésite pas à provoquer sciemment des exception (throw new) dans un contexte ou l'autre pour voir ou ce situe le problème, ou mettre des points d'arrêts et bien faire ton débogage...

    donc fait ton débogage en 2 phases
    tout d'abord tu débogue dans le contexte du thread, pour cela les points d'arrets/exceptions tu les met dans le threads et éventuellement dans la méthode d'interfaçage exécutée par le thread pour savoir si justement il fourni bien le dataset.

    ensuite tu place les points d'arret dans le contexte UI et la vérifie que cette meme méthode synchronisée, recoit bien le dataset, et surtout qu'elle remplie bien la Datagrid

Discussions similaires

  1. Avis sur la bonne utilisation des Threads
    Par Pitivier dans le forum Général Java
    Réponses: 8
    Dernier message: 28/11/2006, 20h07
  2. connexion socket utilisant des threads
    Par alceste dans le forum C++
    Réponses: 16
    Dernier message: 14/10/2006, 12h00
  3. [Débutant]Utilisation des Threads
    Par maniolo dans le forum Débuter avec Java
    Réponses: 19
    Dernier message: 10/07/2006, 11h31
  4. Utilisation des threads
    Par Valinor dans le forum Linux
    Réponses: 2
    Dernier message: 30/11/2005, 16h41
  5. Utilisations des Threads
    Par phoenix440 dans le forum Réseau
    Réponses: 15
    Dernier message: 21/08/2005, 17h19

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