Bonjour,

Je cherche à faire évoluer une ProgressBar lors du téléchargement d'un fichier.
Le problème, c'est que je n'ai pas la main sur le téléchargement (je télécharge sur un serveur SFTP en utilisant la librairie SharpSSH).

Pour faire évoluer ma progressBar, je connais la taille totale du fichier et le nombre d'octet déjà transférer. J'utilise un thread qui toute les demi secondes fait évoluer ma progressBar. Le problème c'est que je ne peux pas modifier ma progressBar directement dans ce thread.

Voilà mon code :

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
public class InterfacePrincipale : System.Windows.Forms.Form
{
...
 private void BVerifierDonneesFTP_Click(object sender, EventArgs e)
 {
            Thread lThreadTelechargement = null;
            //On lance la vérification
            this.LabelVerification.Text="Téléchargement de l'archive ZIP";
            this.LabelVerification.ForeColor = Color.Blue;
            this.BVerifierDonneesFTP.Text = "Annuler";
 
             lThreadTelechargement = new Thread(new ThreadStart(this.progressBarEvolution));
             lThreadTelechargement.Start();
             //Méthode téléchargant le fichier sur le serveur SFTP
             this.lVerificationDonneesFTP.telechargement();
             lThreadTelechargement.Abort();
...
 }
...
private void progressBarEvolution()
 {
  Thread.Sleep(500);
   while (this.lVerificationDonneesFTP.enTelechargement)
   {
          Thread.Sleep(500);
           this.BeginInvoke((MethodInvoker)delegate
           {
                    this.PBTempsVerification.Value = (int)((this.lVerificationDonneesFTP.getQuantiteTelecharge() / this.lVerificationDonneesFTP.getTailleTotale()) * 100);
             });
    }
 
 }
Bien sur ça ne fonctionne pas!

Je pense que le problème vient de l'utilisation du "MethodeInvoker". J'ai saisie l'utilité mais pas vraiment le fonctionnement.

Si quelqu'un pouvait m'éclairer un peu ça serait sympa.

Merci d'avance

Cordialement,
Denethor9