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 :

Traitement récursif de répertoire possiblement en cours de modification


Sujet :

C#

  1. #1
    Membre habitué
    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
    Points : 179
    Points
    179
    Par défaut Traitement récursif de répertoire possiblement en cours de modification
    Bonjour à tous,

    Mon problème est le suivant.
    J'ai des utilisateurs qui scannent des documents qui sont ensuite envoyés automatiquement dans un répertoire + sous-répertoires du réseau.

    Toutes les 20 minutes j'ai un traitement qui parcours récursivement ces répertoires, traite les fichiers qui m’intéresse dans chaque répertoire (.tif et .jpg), en les déplaçant dans un répertoire d'archive et els envoi par ftp. Apres traitement l'appli supprime le répertoire récursivement car il reste des fichiers qui ne sont ni .tif ni .jpg qui sont a supprimé. (System.IO.Directory.Delete(targetDirectory, true);

    Problème :
    Des fichiers .tif et .jpg peuvent tomber dans ces répertoires alors que mon traitement est en cours après le System.IO.Directory.GetFiles(targetDirectory, Filter);

    Dans le meilleur des cas l'appli plante car elle n'arrive pas a supprimer un .tif ou .jpg qui est en cours d'écriture.
    Dans le pire des cas, ces fichiers peuvent donc être supprimé par le Directory.Delete sans avoir été déplacé ni envoyé. (Jamais eu de remontées de cas pareil mais c'est théoriquement possible je penses)

    Si vous avez une solution miracle et pas trop lourde je suis preneur.

    Cdlt,
    MvK
    Les questions ne sont pas obligées d'avoir du sens. Mais les réponses, si.
    Terry Pratchett (Procrastination)

  2. #2
    Membre émérite
    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
    Points : 2 424
    Points
    2 424
    Par défaut
    J'ai des utilisateurs qui scannent des documents qui sont ensuite envoyés automatiquement dans un répertoire + sous-répertoires du réseau.
    des utilisateurs me pense dire que ce sont des threads. si tes fichiers ont une durée de traitement plus grand tu peux pour chaque fichier changé l'extension du fichier pour dire que le fichier est utilisé par un autre thread :exemple : image.Jpeg.InWorKing en suite le thread qui a changé l'extension du fichier c'est lui qui se charge de supprimer le fichier en fin de traitement ;
    et toutes les autres ignorant alors ces fichiers (inworking). et a la fin tu peux supprimer les repertoires vides.

  3. #3
    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
    Travaille plutôt en vases clos.

    Un processus qui crée des répertoires identifiés par période de temps (journée, heure, etc.) et tes autres processus n'ont qu'à insérer les fichiers dans le répertoires correspondant à l'heure où l'opération de sauvegarde débute.

    Disons que pour illustrer mon exemple, tu crées un répertoire par jour, quand il est passé minuit un mardi, tu peux t'attendre à ce que le répertoire du lundi ne reçoivent plus de nouveaux fichiers avant 6 jours, ce qui te donne amplement le temps de faire un nettoyage.

  4. #4
    Membre habitué
    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
    Points : 179
    Points
    179
    Par défaut
    Merci pour vos réponses,

    Cependant elles impliquent d'avoir un minimum de contrôle sur les processus en amont. Ce qui n'est pas le cas.

    A défaut de mieux j'ai pour le moment délaissé la suppression récursive et je passe par un simple Directory.Delete(Path) après avoir supprimé les fichiers inutiles et vérifié que des .tif ou .Jpg ne sont pas arrivés entre-temps. Si c'est le cas je ne fais rien et une nouvelle tentative sera lancé 20 minutes plus tard...
    Les questions ne sont pas obligées d'avoir du sens. Mais les réponses, si.
    Terry Pratchett (Procrastination)

  5. #5
    Membre confirmé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juin 2005
    Messages
    700
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Juin 2005
    Messages : 700
    Points : 488
    Points
    488
    Par défaut
    solution bete et naive
    Quand tu commence ton traitement tu note l'heure DateTime.Now
    et tu ne traite que les fichiers dont la date de création est antérieur à cette date.

    non?

Discussions similaires

  1. Réponses: 1
    Dernier message: 10/11/2008, 16h38
  2. Parcours récursif des répertoires
    Par Prosis dans le forum Langage
    Réponses: 5
    Dernier message: 29/01/2008, 20h39
  3. Triggers récursifs, est-ce possible ?
    Par Borni Gloim dans le forum PL/SQL
    Réponses: 6
    Dernier message: 10/01/2008, 16h20
  4. [DOM] Problème de traitement récursif, nombre de noeuds fils
    Par erivoil dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 13/12/2006, 12h39
  5. Traitement récursif ?
    Par Neilos dans le forum Langage SQL
    Réponses: 1
    Dernier message: 13/08/2005, 22h30

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