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

C# Discussion :

Téléchargement asynchrone des fichiers


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert
    Avatar de azstar
    Homme Profil pro
    Architecte Technique BizTalk/.NET
    Inscrit en
    Juillet 2008
    Messages
    1 198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Technique BizTalk/.NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 198
    Par défaut Téléchargement asynchrone des fichiers
    Bonjour tout le monde ;

    Je travail sur le mode asynchrone pour télécharger des fichiers en utilisant le WebClient.
    Mon classe Downloder est instance pour télécharger un seul fichier.
    Donc pour télécharger mes fichiers je fais.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    foreach (WebServiceClient.ProductFile file in Files)
         {
           down = new Downloader(file, file. SourcePath,file.DestinationPath);
           down.StartDownloadFile();
     
     
          }
    Et à chaque fin de téléchargement d’un fichier je fais un traitement.

    Mais le grand traitement ce fait à la fin de téléchargement de tous fichiers.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    public void StartDownloadFile()
     {
     
       Client.Credentials = new SeverUsersRights();//client is a WebClient 
       Client. DownloadFileAsync(new Uri(@ServerPath + FileSourcePath),@FileDestinationPath);
     
     }
    Pour savoir la fin de telechargement d’un fichier j’ai fait
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Client.DownloadFileCompleted += new AsyncCompletedEventHandler(OnDownloadFileCompleted);
     
    void OnDownloadFileCompleted(object sender, AsyncCompletedEventArgs e)
            {
     
     
               //traitement de fichier telechargé 
     
            }
    Ma question est la suivante

    Comment je peux savoir que j’ai termine le téléchargement de tous mes fichiers ?
    Ma solution :

    Je me dis que lors du lancement de téléchargement de mon fichier je peux faire un

    List/arraylist /dictionnaire ….. Pour ajouter les fichiers encours de téléchargement.
    Je m’explique
    Par exemple je peux faire


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    List<file> filesdown=new List<file> ;
    Et à chaque fois que je lance un téléchargement je fais

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    foreach (WebServiceClient.ProductFile file in Files)
         {
           down = new Downloader(file, file. SourcePath,file.DestinationPath);
           down.StartDownloadFile();
           filesdown.Add(file) ;
     
          }
    Et chaque fin de téléchargement d’un fichier je lui retire de ma liste pour dire que le téléchargement de ce dernier est terminé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    void OnDownloadFileCompleted(object sender, AsyncCompletedEventArgs e)
            {
     
     
               //traitement de fichier telechargé 
               Filesdown.Remove(file) ;
    If (filesdown.count ==0)
    {
      FileDownloadAsyncEventArgs PersonalEvent = new FileDownloadAsyncEventArgs(FileDestinationPath,10000,DateTime.Now );
     
                if (PersonalEvent != null) DownloadFilesCompleted(this, PersonalEvent);//evenement de fin de telechargement de tous les fichiers 
    }
            }
    Est ce que ma solution est convenable sinon Est ce que il y’a une autre méthode pour résoudre mon problème ?

    merci

  2. #2
    Membre chevronné
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2008
    Messages
    381
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2008
    Messages : 381
    Par défaut
    J'ai une application en Silverlight qui télécharge des fichiers, j'ai utilisé la méthode de la liste pour savoir où je suis rendu.

    J'enlève les fichiers de la liste à mesure qu'ils sont téléchargé.

  3. #3
    Membre Expert
    Avatar de azstar
    Homme Profil pro
    Architecte Technique BizTalk/.NET
    Inscrit en
    Juillet 2008
    Messages
    1 198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Technique BizTalk/.NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 198
    Par défaut
    J'ai une application en Silverlight qui télécharge des fichiers, j'ai utilisé la méthode de la liste pour savoir où je suis rendu.

    J'enlève les fichiers de la liste à mesure qu'ils sont téléchargé.
    et ????

  4. #4
    Membre chevronné
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2008
    Messages
    381
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2008
    Messages : 381
    Par défaut
    Est ce que ma solution est convenable[...]?
    Oui

  5. #5
    Membre Expert
    Avatar de azstar
    Homme Profil pro
    Architecte Technique BizTalk/.NET
    Inscrit en
    Juillet 2008
    Messages
    1 198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Technique BizTalk/.NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 198
    Par défaut
    merci

    est ce vous avez trouver des contraintes plus complexe en appliquant cette methodes ?

  6. #6
    Membre chevronné
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2008
    Messages
    381
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2008
    Messages : 381
    Par défaut
    Non. Même que ça permet de réutiliser les mêmes fonctions. C'est tout beau tout propre.

    Le truc qui ma fait réfléchir c'était que je voulais exécuter une fonction différente après le téléchargement de chaque fichier dépendament où j'étais rendu. Et je ne voulais pas faire des "if". Finalement pour y arriver j'ai utilisé un Tuple. Je n'avais jamais utilisé ça auparavant.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Le téléchargement direct des fichiers désormais prohibé sur Google Code
    Par Stéphane le calme dans le forum Cloud Computing
    Réponses: 9
    Dernier message: 25/05/2013, 11h00
  2. téléchargement asynchrone des fichiers
    Par est2010 dans le forum Windows Forms
    Réponses: 3
    Dernier message: 23/03/2010, 14h07
  3. Forcer téléchargement et chemin des fichiers
    Par nicolas.pissard dans le forum Langage
    Réponses: 2
    Dernier message: 15/01/2008, 15h54
  4. apache-téléchargement des fichiers à partir d'un serveur different
    Par don'de dans le forum Serveurs (Apache, IIS,...)
    Réponses: 1
    Dernier message: 11/01/2008, 16h16
  5. Réponses: 1
    Dernier message: 06/12/2007, 16h57

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