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 :

Problème déclaration fin évènement


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Août 2011
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2011
    Messages : 12
    Par défaut 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 : 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.

  2. #2
    Modérateur

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Avril 2007
    Messages
    1 996
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 996
    Par défaut
    Bonsoir,

    Je ne vois pas à quel moment tu peux passer dans l'évènement "Dl_Fin_Dl1" avec le code que tu postes.
    Est-ce que tu atteins cet event ?

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Août 2011
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2011
    Messages : 12
    Par défaut
    Merci de m'avoir répondu. Donc comme je l'ai dit je veux placer cette condition (que l'évènement dl_fin_dl1 soit levé) dans la partie comparaison en dessous la ligne qui lance le début du téléchargement, pour attendre sa fin avant de poursuivre la boucle.

    Donc par exemple ici:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
                                If sha256_dist <> sha256_loc Then
                                    Dl.Donwload_File_3("http://www.monsite.fr/updater/pack/" & fichier_dist, Application.StartupPath & "\" & fichier_dist, False, True)
    'placer la condition ici juste après le téléchargement
                                Else
    J'ai testé de lancer mon code avec des points d'arrêts un peu partout (F9), cet évènement apparait bien une fois le téléchargement d'un fichier terminé mais la boucle (de la comparaison) a eu le temps de se faire plusieurs fois ce qui fait que plusieurs téléchargements sont lancés en même temps ce qui fait tout buger. Je veux mettre une condition à l'endroit montré dans l'exemple comme quoi il faut que l'évènement dl_fin_dl1 soit levé pour continuer la boucle et ainsi faire que les fichiers soient téléchargés un par un.

Discussions similaires

  1. [C# 2.0] Problème avec l'évènement de mon userControl
    Par manu94600 dans le forum ASP.NET
    Réponses: 2
    Dernier message: 04/11/2006, 20h36
  2. [ANTLR]Problème de fin de fichier
    Par anitshka dans le forum EDI et Outils pour Java
    Réponses: 6
    Dernier message: 04/09/2006, 14h53
  3. problème avec l'événement onBlur
    Par danyboy85 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 26/04/2006, 11h48
  4. [wxpython] problème avec les événements souris
    Par kalimero dans le forum wxPython
    Réponses: 2
    Dernier message: 13/11/2005, 15h42
  5. [JS] Problème déclaration de fonction
    Par glloq8 dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 23/09/2005, 10h22

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