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 :

Copie d'un dossier avec progressbar


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Inscrit en
    Décembre 2006
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 10
    Par défaut Copie d'un dossier avec progressbar
    Bonjour,

    J'utilise Visual basic 2008 express depuis peu et je souhaite réaliser une petite application dont le rôle sera de copier un dossier, avec ses sous-dossiers et fichiers dans un autre dossier (équivalent d'un xcopy x:\source y:\destination /s/e).

    Comme la copie peut durer un petit moment, je souhaiterais ajouter une barre de progression pour que l'utilisateur ne s'impatiente pas.

    Mais après plusieurs heures de recherche, je commence à me décourager car je n'ai rien trouvé d'exploitable.

    C'est pourquoi je me tourne vers vous.

    Auriez-vous des pistes ou un exemple de code assez simple que je pourrais utiliser comme base ?

    Merci d'avance...
    cordialement,

  2. #2
    Membre Expert Avatar de LaChips
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    1 109
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 109
    Par défaut
    Bonjour,

    Vous pouvez regarder du côté du BackgoundWorker pour faire un thread d'arrière plan. Et dans la méthode Work() de ce thread, une boucle qui parcours les fichiers à traiter...

    En espérant avoir répondu à votre question.

  3. #3
    Membre Expert
    Avatar de Aspic
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    3 905
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2005
    Messages : 3 905
    Par défaut
    Pour le BackGroundWorker, regarde sur ce site il y a un tutos et j'ai même créé une source dessus !

    Go to : http://aspic.developpez.com
    Qui ne tente rien n'a rien !
    Ce qui ne nous tue pas nous rends plus fort !!
    Mon projet ZELDA en C++/Allegro
    http://www.tutoworld.com - Le Forum -
    Mes ressources Dotnet (cours, sources, tutos)
    --------------------------------------------
    + + =

    Ne pas oublier le Tag !

  4. #4
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Qu'est-ce qui te pose problème exactement ? Je suppose que tu as déjà trouvé le contrôle ProgressBar... pour faire avancer la barre il suffit de modifier la propriété Value au fur et à mesure de ton traitement.

    Pour ne pas bloquer l'interface pendant le traitement, il faut faire la copie dans un autre thread (c'est à dire un autre "fil d'exécution" qui s'exécute en parallèle). Le plus simple pour faire ça est d'utiliser le BackgroundWorker, mentionné dans les posts ci-dessus. Par contre, tu ne peux pas modifier l'interface graphique (et donc la ProgressBar) directement à partir d'un autre thread : à la place, tu appelles la méthode ReportProgress du BackgroundWorker, qui va déclencher un évènement (ProgressChanged) sur le thread de l'interface graphique. Il suffit de gérer cet évènement pour mettre à jour la ProgressBar.

    Voilà, j'espère que c'est à peu près clair... en lisant les tutoriels ça devrait l'être encore plus !

  5. #5
    Membre Expert Avatar de Danyel
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2005
    Messages
    1 699
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juillet 2005
    Messages : 1 699
    Par défaut
    Perso, pour la progressbar, je te conseille d'aller chercher le poids total des fichiers/repertoires et de jouer sur cela.
    C'est la methode qui est la plus courante et surtout la plus significative.

  6. #6
    Membre habitué
    Inscrit en
    Décembre 2006
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 10
    Par défaut Explication
    Merci pour votre aide si rapide. C'est très sympa de votre part.

    Effectivement j'utilise une progressbar, mais je ne sais pas quelle méthode de copie pourra rendre la main à chaque fichier pour pouvoir incrémenter la progressbar. Copyfolder ne convient visiblement pas ?

    Les conseils de Danyel me font penser à une analyse récursive pour obtenir le poids du dossier à copier (à moins qu'il existe une méthode directe), puis une copie récursive fichier par fichier avec incrément de la progressbar ? Suis-je sur la bonne piste ?

    Je ne connaissais pas non plus le BackgoundWorker.
    Mais comme je suis débutant, je souhaiterais d'abord faire un code qui soit le plus simple possible et l'optimiser ensuite (quand j'aurai atteins mon objectif principal).

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

Discussions similaires

  1. [Batch] Copie Certains Dossiers (avec leurs arborescences)
    Par stzurg dans le forum Scripts/Batch
    Réponses: 1
    Dernier message: 28/08/2011, 15h19
  2. Copie d'un dossier avec la publication
    Par amoniaque dans le forum VB.NET
    Réponses: 7
    Dernier message: 27/01/2009, 13h25
  3. lire un fichier copié dans un dossier avec le meme code
    Par vieri31 dans le forum C++Builder
    Réponses: 22
    Dernier message: 27/05/2008, 04h23
  4. Copie de fichiers avec progressbar
    Par serialmatrix dans le forum C++
    Réponses: 3
    Dernier message: 11/02/2006, 19h30

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