Bonjour tout le monde. Je rencontre actuellement un soucis dans la création de mon application (système de mise à jour), le bug est que plusieurs téléchargements se lancent en même temps car la partie comparaison est sous forme de boucle et c'est dans celle ci que le début des téléchargements sont lancés. Elle n'attend donc pas la fin de l'évènement de fin de téléchargement pour continuer et lance donc d'autres téléchargements en simultané, ce qui fait buger et que je ne veux pas.

Voici la partie qui foire (c'est la comparaison avec téléchargement):

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
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
Using reader_dist As New IO.StreamReader(Application.StartupPath & "\liste.txt")
            Do While Not reader_dist.EndOfStream
                'lecture de la ligne du fichier
                Dim ligne_dist As String = reader_dist.ReadLine
                'séparation des informations
                Dim fichier_dist As String = ligne_dist.Split(" "c)(0)
                Dim sha256_dist As String = ligne_dist.Split(" "c)(1)
                Dim fichier_loc As String = ""
                Using reader_loc As New IO.StreamReader(Application.StartupPath & "\listelocale.txt")
                    Dim fichierexiste As Boolean = False
                    Do While Not reader_loc.EndOfStream
                        Dim ligne_loc As String = reader_loc.ReadLine
                        fichier_loc = ligne_loc.Split(" "c)(0)
                        Dim sha256_loc As String = ligne_loc.Split(" "c)(1)
                        'fichiers de même nom
                        If fichier_dist = fichier_loc Then
                            'le sha256 est différent
                            If sha256_dist <> sha256_loc Then
                                Dl.Donwload_File_3("http://www.monsite.fr/updater/pack/" & fichier_dist, Application.StartupPath & "\" & fichier_dist, False, True)
                            Else
                                'le hash est le même (on peut effectuer une action ici)
                            End If
                            fichierexiste = True
                            Exit Do
                        End If
                    Loop
                    'si le fichier n'existe pas on le télécharge
                    If Not fichierexiste Then
                        Dl.Donwload_File_3("http://www.monsite.fr/updater/pack/" & fichier_dist, Application.StartupPath & "\" & fichier_dist, False, True)
                    End If
                End Using
            Loop
        End Using
Il suffirait de mettre en dessous des deux :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
Dl.Donwload_File_3("http://www.monsite.fr/updater/pack/" & fichier_dist, Application.StartupPath & "\" & fichier_dist, False, True)
Une condition qui oblige d'attendre que l'évènement de fin de téléchargement soit levé pour continer la boucle (cela consisterait à lancer les téléchargements un par un).
Il y a dans mon code cet évènement:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
    Private Sub Dl_Fin_Dl1(ByVal actual_pos As Long) Handles Dl.Fin_Dl
        pb.Value = 0 'reinitialise la progressbar
        SizeFile = 0 'idem
        StartTime = 0 'idem
        L_Info.Text = "Liste des mises à jour chargée"
    End Sub
Qui correspond à la fin du téléchargement et aussi ceci:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
Public Event Fin_Dl(ByVal actual_pos As Long)
Je pense qu'avec une de ces deux parties, une condition est possible à mettre en place sous les téléchargements (à l'intérieurs de la boucle). Si l'évènement n'est pas lever: attendre ou quelque chose dans le genre mais voilà je ne sais pas du tout comment le faire, ce n'est pas faute d'avoir recherché.

Si quelqu'un pouvait me venir en aide je lui serai reconnaissant,
Cordialement.