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 :

Programme ne fonctionne que avec point d'arret


Sujet :

C#

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2011
    Messages
    98
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2011
    Messages : 98
    Points : 55
    Points
    55
    Par défaut Programme ne fonctionne que avec point d'arret
    Bonjour,

    J'ai un petit programme qui crée des dossiers, les remplie en dézippant un fichier existant et renomme un des fichiers dézippé. Lorsque j’exécute le code pas à pas avec un point d’arrêt, tout fonctionne. Mais si je l’exécute normalement (avec f5), les répertoires sont créés, les fichiers bien extraits, mais rien n'est renommé.
    J'ai fait plusieurs fois le test et j'ai toujours le même problème.
    Quelqu'un saurait d'où cela peut venir?
    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
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
     
    string[] Fichiers;
                    string Racine_Source = "C:\\SOURCE\\";
                    string Racine_Destination = "C:\\DESTINATION\\";
     
                    //Pour avoir les noms des fichiers et rpertoires
                    Fichiers = Directory.GetFileSystemEntries(Racine_Source);
     
                    foreach (string Fichier in Fichiers)
                    {
                        string Nom_Fichier = Path.GetFileName(Fichier);
                        string Nom_Dossier = Path.GetFileNameWithoutExtension(Fichier);
     
                        // Cration des chemins
                        string Source_Fichier = System.IO.Path.Combine(Racine_Source, Nom_Fichier);
                        string Destination_Dossier = System.IO.Path.Combine(Racine_Destination, Nom_Dossier);
     
                        // Crer le dossier destination si besoin
                        if (!System.IO.Directory.Exists(Destination_Dossier))
                        {
                            System.IO.Directory.CreateDirectory(Destination_Dossier);
                        }
     
                        //Dcompression
                        string strCmdText;
                        strCmdText = " " + Source_Fichier + " -d " + Destination_Dossier + "\\";
                        System.Diagnostics.Process proc = new System.Diagnostics.Process();
                        proc.EnableRaisingEvents=false;
                        proc.StartInfo.FileName= "c:\\unzip.exe";
                        proc.StartInfo.Arguments = strCmdText;
                        proc.Start();
     
                        //On trouve le CV au format .doc
                        bool Fichier_Existant = false;
                        string[] Fichiers_unzip;
                        string Fichier_DOC = "";
                        Fichiers_unzip = Directory.GetFileSystemEntries(Destination_Dossier);
                        foreach (string Fichier_unzip in Fichiers_unzip)
                        {
                            if (Fichier_unzip.Contains("-cv.doc"))
                            {
                                //Fichier existant
                                if (Fichier_unzip.Contains("MONCV_"))
                                {
                                    Fichier_Existant = true;
                                }
                                else
                                {
                                    Fichier_DOC = Path.GetFileName(Fichier_unzip);
                                }
                            }
                        }
     
                        //Si on trouve un CV
                        if (Fichier_DOC != "")
                        {
     
                            string Nouveau_Fichier_DOC = "MONCV_" + Fichier_DOC;
     
                            //On supprime l'ancien si besoin
                            if (Fichier_Existant)
                            {
                                System.IO.File.Delete(Destination_Dossier + "\\" + Nouveau_Fichier_DOC);
                            }
     
                            //On renomme le fichier MONCV
                            File.Move(Destination_Dossier + "\\" + Fichier_DOC, Destination_Dossier + "\\" + Nouveau_Fichier_DOC);
     
                        }
                    }

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    332
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Juin 2002
    Messages : 332
    Points : 502
    Points
    502
    Par défaut
    Quand tu traites avec IO, il peut y avoir des 'race conditions' (je ne connais pas le terme en français).

    Mets ceci après les étapes importantes pour voir:


  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2011
    Messages
    98
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2011
    Messages : 98
    Points : 55
    Points
    55
    Par défaut
    Merci pour la réponse, voila ce que j'ai essayé, mais ca ne marche pas :

    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
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
     
    string[] Fichiers;
                    string Racine_Source = "C:\\SOURCE\\";
                    string Racine_Destination = "C:\\DESTINATION\\";
     
                    //Pour avoir les noms des fichiers et rpertoires
                    Fichiers = Directory.GetFileSystemEntries(Racine_Source);
     
                    foreach (string Fichier in Fichiers)
                    {
                        string Nom_Fichier = Path.GetFileName(Fichier);
                        string Nom_Dossier = Path.GetFileNameWithoutExtension(Fichier);
     
                        // Cration des chemins
                        string Source_Fichier = System.IO.Path.Combine(Racine_Source, Nom_Fichier);
                        string Destination_Dossier = System.IO.Path.Combine(Racine_Destination, Nom_Dossier);
     
                        // Crer le dossier destination si besoin
                        if (!System.IO.Directory.Exists(Destination_Dossier))
                        {
                            System.IO.Directory.CreateDirectory(Destination_Dossier);
                            System.Threading.Thread.Sleep(10);
                        }
     
                        //Dcompression
                        string strCmdText;
                        strCmdText = " -o " + Source_Fichier + " -d " + Destination_Dossier + "\\";
                        System.Diagnostics.Process proc = new System.Diagnostics.Process();
                        proc.EnableRaisingEvents=false;
                        proc.StartInfo.FileName= "c:\\unzip.exe";
                        proc.StartInfo.Arguments = strCmdText;
                        proc.Start();
                        System.Threading.Thread.Sleep(10);
     
                        //On trouve le CV au format .doc
                        bool Fichier_Existant = false;
                        string[] Fichiers_unzip;
                        string Fichier_DOC = "";
                        Fichiers_unzip = Directory.GetFileSystemEntries(Destination_Dossier);
                        foreach (string Fichier_unzip in Fichiers_unzip)
                        {
                            if (Fichier_unzip.Contains("-cv.doc"))
                            {
                                //Fichier existant
                                if (Fichier_unzip.Contains("MONCV_"))
                                {
                                    Fichier_Existant = true;
                                }
                                else
                                {
                                    Fichier_DOC = Path.GetFileName(Fichier_unzip);
                                }
                            }
                        }
                        System.Threading.Thread.Sleep(10);
     
                        //Si on trouve un CV
                        if (Fichier_DOC != "")
                        {
     
                            string Nouveau_Fichier_DOC = "MONCV_" + Fichier_DOC;
     
                            //On supprime l'ancien si besoin
                            if (Fichier_Existant)
                            {
                                System.IO.File.Delete(Destination_Dossier + "\\" + Nouveau_Fichier_DOC);
                                System.Threading.Thread.Sleep(10);
                            }
     
                            //On renomme le fichier MONCV
                            File.Move(Destination_Dossier + "\\" + Fichier_DOC, Destination_Dossier + "\\" + Nouveau_Fichier_DOC);
                            System.Threading.Thread.Sleep(10);
                        }
                    }

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2011
    Messages
    98
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2011
    Messages : 98
    Points : 55
    Points
    55
    Par défaut
    J'ai une piste je crois :
    J'ai mis des
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    System.Diagnostics.Debug.Write
    à chaque étape et je me rend compte que l’exécution ne passe même pas dans le IF ligne 42 (alors qu'en exécutant pas à pas, si).
    Il faut surement rafraichir/actualise le dossier lu, je regarde dans cette direction et vous tient au courant...

    edit :
    ca marche avec un sleep avant la ligne 39 !

    merci

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

Discussions similaires

  1. Programme ne fonctionne pas avec 3 caméras (avec 1 et 2 c'est OK)
    Par beegees dans le forum Général Python
    Réponses: 0
    Dernier message: 26/10/2010, 14h20
  2. [Smarty] mes tag avec accents fonctionnent .. que sous windows!
    Par hansaplast dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 14/06/2007, 23h30
  3. Réponses: 1
    Dernier message: 03/01/2007, 14h20
  4. Réponses: 2
    Dernier message: 30/10/2005, 14h38
  5. Programme ne fonctionnant que sur certaines machines
    Par Marekh dans le forum DirectX
    Réponses: 14
    Dernier message: 30/08/2005, 14h09

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