Problème déclaration fin évènement
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:
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:
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:
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:
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.