Aide téléchargement Async
Bonjour à tous,
Je viens vers vous après plusieurs recherches sur le net sans succès ^^.
Alors je vous explique mon problème, Je suis en train de créer un launcher qui doit télécharger plusieurs fichiers .zip qui sont ensuite décompressé. De ce coté il n'y a aucun problème, mais ce que je voudrait c'est de faire une barre de progression qui affiche ou en est le téléchargement. J'ai donc suivis ce tutoriel: http://www.dreamincode.net/forums/to...h-progressbar/ , ce qui donne ceci:
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
| Private Sub client_ProgressChanged(ByVal sender As Object, ByVal e As DownloadProgressChangedEventArgs)
Dim bytesIn As Double = Double.Parse(e.BytesReceived.ToString())
Dim totalBytes As Double = Double.Parse(e.TotalBytesToReceive.ToString())
Dim percentage As Double = bytesIn / totalBytes * 100
pboProgress.Value = Int32.Parse(Math.Truncate(percentage).ToString())
End Sub
Private Sub client_DownloadCompleted(ByVal sender As Object, ByVal e As System.ComponentModel.AsyncCompletedEventArgs)
MessageBox.Show("Download Complete")
Button2.Text = "Start Download"
Button2.Enabled = True
End Sub
Private Sub downloadAsyn(ByVal fichier As String)
Dim client As WebClient = New WebClient
AddHandler client.DownloadProgressChanged, AddressOf client_ProgressChanged
AddHandler client.DownloadFileCompleted, AddressOf client_DownloadCompleted
client.DownloadFileAsync(New Uri("url"), "destination")
'Cette boucle permet d'attendre la fin du téléchargement avant de continuer
While client.IsBusy
System.Threading.Thread.Sleep(1)
End While
End Sub |
j'ai rajouter une boucle pour attendre la fin du téléchargement avant de continuer, et c'est cette boucle qui bloque la fonction client_ProgressChanged.
Je voudrait donc savoir comment attendre la fin du téléchargement sans cette boucle ou alors récupérer la taille de donné restante, pour la barre de progression, directement dans cette boucle.
Merci d'avance pour votre aide, je reste à votre disposition si vous avez besoin de plus d'informations.