Bienvenue sur Labo-dotnet Identification | Enregistrement | Faq

Windows Application

Démarré par boblemar à 06-26-2008 18:26. Le sujet a 0 réponse(s).

Print Search
Sort Posts:    
   06-26-2008, 18:26
boblemar n'est pas en ligne. Dernière activité : 26/06/2008 11:02:17 boblemar

Non Noté
Rejoint : 06-26-2008
Messages : 2
Thread.join, Invoke et rafraichissement de l'ui
Reply Quote
Bonjour,

Je suis en train de m'amuser avec le multithread en dotnet, mais je suis face à un soucis.
Mon but est pourtant assez simple : je lance N threads, je veux attendre la fin de chacun des threads tout en mettant à jour une progress bar à la fin de chaque thread.
Mon code simplifié ressemble à cela :

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click

        Dim lstThreads As New List(Of Thread)

        Me._progressBar.Visible = True
        Me._progressBar.Value = 0
        For i As Integer = 1 To NB_QUERY
            Dim thread As New Thread(AddressOf DoIt)
            thread.Name = "DoIt " + i.ToString()
            thread.Start()
            lstThreads.Add(thread)
        Next

        For Each thread As Thread In lstThreads
            If thread IsNot Nothing AndAlso thread.IsAlive Then
                Console.WriteLine("---------------- en attente de : " + thread.Name)
                thread.Join()
            End If
        Next

        Me._progressBar.Visible = False

    End Sub

Private Sub DoIt()

' faire quelque chose de lon

        Console.WriteLine("*")
        Me.Invoke(New RefreshProgressBarHandler(AddressOf RefreshProgressBar))
        Console.WriteLine(" Fin de : " + Thread.CurrentThread.Name)
    End Sub


En fait, lorsque le programme arrive sur le Me.Invoke, le thread se bloque. Je remarque aussi que l'ui ne se rafraichit pas.
Je suppose que le problème vient du fait que thread.Join() ne laisse pas se dérouler la pompe d'évenements (postulat), mais alors comment faire ?

Adresse IP : Connecté   Rapport 
Labo-dotnet » Programmation .... » Windows Applica... » Thread.join, Invoke et rafraichissement de l'ui

Sponsorisé par Community Server


Conditions d’utilisation et Copyright
Respect de la vie privée