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 :

Deplacer Dossier D'un pc a un serveur via c# [Débutant]


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Etudiant
    Inscrit en
    Janvier 2013
    Messages
    60
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Etudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2013
    Messages : 60
    Par défaut Deplacer Dossier D'un pc a un serveur via c#
    Merci de lire mon Dernier message en bas du thread, Changement complet de sujet.

  2. #2
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Février 2003
    Messages
    2 194
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2003
    Messages : 2 194
    Par défaut
    La balise [ CODE][ /CODE] existe

    Le programme ne plante pas mais reste bloquer car il n'y a qu'un seul Thread et que tu lui demandes de se figer (Sleep d'un seconde)

    Il faut jouer avec soit un timer, soit creer un autre thread

  3. #3
    Membre éprouvé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2012
    Messages
    87
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Juin 2012
    Messages : 87
    Par défaut
    Salut,

    Ton programme ne plante pas à proprement parlé.
    C'est surtout que tu lances une boucle infinie sur le thread principal de ton application et qu'une fois lancé tu ne peux plus interagir sur l'interface.

    A mon sens le mieux serait d'utiliser la classe background worker.

    Tu trouveras un tutoriel sur l'utilisation de cette classe ici:
    http://webman.developpez.com/article...ckroundworker/

    Tu disposes également d'un exemple concret ici

    Bonne chance.
    MvK

  4. #4
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    63
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 63
    Par défaut
    Essaye un truc comme ça mais j'ai pas testé.
    Et c'est la première fois que j'essaye d'aider kkun alors te fie pas trop a moi ;D
    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
    public int i;
    public BackgroundWorker bgwboucle;
     
            public void bgwboucle_Dowork(object sender, DoWorkEventArgs e)
            { 
              int o = 0;
     
                do{
     
                    o++;
                    UIUpdaterDelegate delegate1 = delegate {
                    nbcycle.Text = Convert.ToString(o);
                    };
                    nbcycle.Invoke(delegate1); // Label affiche nombre de  cycle effectué
                    Thread.Sleep(1000); // Pause: 1Sec
                } while (this.i == 1);
            }
     
            private void launch_Click(object sender, EventArgs e)
            {
                this.i = 1;
                if(!this.bgwboucle.IsBusy)
                {
                     this.bgwboucle.RunWorkerAsync();
                }
            }
     
            private void stop_Click(object sender, EventArgs e)
            {
                this.i = 0;            
            }
     
    this.bgwboucle.DoWork += new System.ComponentModel.DoWorkEventHandler(this.bgwboucle_DoWork);
    Citation Envoyé par harghan Voir le message
    Bonjour, je suis actuellement en stage Informatique en industrie et je doit effectuer une Moulinette avec pause.


    JE suis sous Visual studio 2005.


    Donc je prend tout depuis le debut.

    J'ai creer un projet application c# (avec interface graphique)

    J'ai fait une interface graphique bouton Demarrer / arreter et un label qui affiche le nombre de cycle effectué.



    Edit: j'en suis arriver a ceci:


    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
    public void boucle (int i)
            { 
              int o = 0;
     
                do{
     
                    o = o + 1;
                    nbcycle.Text = Convert.ToString(o); // Label affiche nombre de  cycle effectué
                    System.Threading.Thread.Sleep(1000); // Pause: 1Sec
                } while (i == 1);
     
     
            }
     
            private void launch_Click(object sender, EventArgs e)
            {
                boucle(1);
     
     
     
            }
     
            private void stop_Click(object sender, EventArgs e)
            {
     
                boucle(0);
     
            }
    Le programme plante lorsque j'appuie sur le bouton lancer
    help

  5. #5
    Membre émérite
    Avatar de neilbgr
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2004
    Messages
    651
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Août 2004
    Messages : 651
    Par défaut
    Et le while ?
    la variable i ne varie jamais... donc boucle infinie... pas la peine de sortir l'artillerie lourde avec le BackgroundWroker ! (En tous cas, pas de suite).
    Suggestion :
    au lieu de
    À priori, effectivement l'utilisation d'un timer serait largement plus approprié !

  6. #6
    Membre éprouvé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2012
    Messages
    87
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Juin 2012
    Messages : 87
    Par défaut
    Et le while ?
    la variable i ne varie jamais... donc boucle infinie... pas la peine de sortir l'artillerie lourde avec le BackgroundWroker !
    Je penses que la boucle infini c'est le but recherché.
    D'où l'utilisation d'un autre thread via BgW,ce qui me semble le plus propre. Après je peux me planter.

    Si on reste dans le main thread impossible de mettre à jour le label avec le nombre d’occurrences de cycle, sauf si on utilise l'Application.doEvents() ce qui serait, à mon sens, fort peu subtil.

    MvK

  7. #7
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    63
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 63
    Par défaut
    Citation Envoyé par MvK0610 Voir le message
    Si on reste dans le main thread impossible de mettre à jour le label avec le nombre d’occurrences de cycle, sauf si on utilise l'Application.doEvents() ce qui serait, à mon sens, fort peu subtil.

    MvK
    d'ou le UIUpdaterDelegate non ? enfin moi sur mon programme j'utilise ça de partout ça met a jour les label en temps réel même si je suis sur une autre Tab

  8. #8
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    63
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 63
    Par défaut
    Citation Envoyé par neilbgr Voir le message
    Et le while ?
    la variable i ne varie jamais... donc boucle infinie... pas la peine de sortir l'artillerie lourde avec le BackgroundWroker ! (En tous cas, pas de suite).
    Ben il a 2 boutons il dit. Un qui lance la boucle l'autre qui l'arrête
    Le premier bouton fixe this.i a 1 et lance le backgroundworker qui tourne temps qu'on click pas sur le bouton stop qui passe this.i à 0
    C'est sur on doit pouvoir faire mieux mais dans le principe ça devrais marcher non ?

  9. #9
    Inactif  

    Homme Profil pro
    Ingénieur test de performance
    Inscrit en
    Décembre 2003
    Messages
    1 986
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur test de performance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 986
    Par défaut
    Bonjour.

    Un truc simple pour commencer et pour comprendre :

    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
     
     
    private bool bContinue;
     
    public void boucle ()
            { 
              int o = 0;
     
                do{
     
                    o = o + 1;
                    nbcycle.Text = Convert.ToString(o); // Label affiche nombre de  cycle effectué
                    System.Threading.Thread.Sleep(1000); // Pause: 1Sec
                } while (bContinue);
     
     
            }
     
            private void launch_Click(object sender, EventArgs e)
            {
                bContinue = true;
                boucle();
            }
     
            private void stop_Click(object sender, EventArgs e)
            {
     
                bContinue = false;
     
            }
    PS : préférer les méthodes proposées précédemment.

  10. #10
    Membre confirmé
    Homme Profil pro
    Etudiant
    Inscrit en
    Janvier 2013
    Messages
    60
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Etudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2013
    Messages : 60
    Par défaut
    Bon ben, L'interface n'etant pas obligatoire (vu que c'est un petit logiciel qui tourne sans l'aide de personne)

    je suis passer a une appli console.

    J'ai donc reussi ma boucle avec le timer etc

    Maintenant le probleme qui se presente c'est que j'ai eu l'idée d'utiliser Directory.Move pour Deplacer les Dossier

    Sauf qu'avec cette commande, on ne peux transferer des dossiers d'un endroit a un autre du MEME disque dur.



    Code: [Sélectionner]

    Variables:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    string Dossier1 = @"Z:\Soft_**\***_***\Desktop";
    string Dest1 = @"C:\serv\";
    dans le main:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
       Directory.Move(Dossier1,Dest1);
    Erreur affiché:

    Le chemin d'accès source et celui de destination doivent avoir des racines identiques. Le déplacement n'est pas possible entre ces volumes.




    Je me retrouve bloqué sur 'Comment deplacer les dossiers D'un PC a un serveur (via reseau). (Z = serveur // C = Local).

    P.s (les etoiles sur les chemins, c'est juste de la censure.)



    Une solution

  11. #11
    Membre confirmé
    Homme Profil pro
    Etudiant
    Inscrit en
    Janvier 2013
    Messages
    60
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Etudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2013
    Messages : 60
    Par défaut
    Doublon, Message a supprimer

  12. #12
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Février 2003
    Messages
    2 194
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2003
    Messages : 2 194
    Par défaut
    Directory.Copy(source,destination)
    Directory.Delete(source)

    Pourquoi faire simple quand on peut faire compliquer


    dans un try catch ca peut etre utile

  13. #13
    Membre confirmé
    Homme Profil pro
    Etudiant
    Inscrit en
    Janvier 2013
    Messages
    60
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Etudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2013
    Messages : 60
    Par défaut
    Citation Envoyé par BenoitM Voir le message
    Directory.Copy(source,destination)
    Directory.Delete(source)

    Pourquoi faire simple quand on peut faire compliquer


    dans un try catch ca peut etre utile


    Directory.Copy N'existe pas
    ou du moins mon Visual Studio ne me le propose pas.


    Edit: en regardant sur le net, il y aurait une alternative a Directory.Copy

    Ce serait:

    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
     
    private void XCopy(string dir1, string dir2)
            {
     
     
                string[] files = Directory.GetFiles(dir1);
     
                foreach (string f in files)
                {
                    File.Copy(f, dir2 + f.Substring(dir1.Length), true);
                }
     
     
                string[] dirs = Directory.GetDirectories(dir1);
                foreach (string d in dirs)
                {
                    XCopy(d, dir2 + d.Substring(dir1.Length));
                }

    Sauf que quand je met cette fonction Dans ma class

    Mon main ne reconnait pas Xcopy, je n'arrive pas a utiliser la fonction, pourquoi ?

  14. #14
    Membre chevronné
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Septembre 2011
    Messages
    610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Septembre 2011
    Messages : 610
    Par défaut
    incompréhensible ton Thread!!
    Nouveau sujet = Nouveau thread
    Problème d'accès, tu appels surement ta méthode depuis une méthode static.
    Essai avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    private static void XCopy(...)

  15. #15
    Inactif  

    Homme Profil pro
    Ingénieur test de performance
    Inscrit en
    Décembre 2003
    Messages
    1 986
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur test de performance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 986
    Par défaut
    Bonjour.

    Citation Envoyé par harghan Voir le message
    Merci de lire mon Dernier message en bas du thread, Changement complet de sujet.
    Changement complet, ça veut dire nouveau thread.

    Ce thread aurait dû être signalé :

    Il faut remettre le message d'origine, sinon ce thread sera incompréhensible.

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

Discussions similaires

  1. Dossier data de Mysql dans un serveur distant
    Par maxeur dans le forum MySQL
    Réponses: 3
    Dernier message: 21/07/2009, 19h14
  2. Réponses: 0
    Dernier message: 02/07/2009, 21h23
  3. Réponses: 5
    Dernier message: 30/07/2008, 08h06

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