Fichier utilsé par d'autre processus [Résolu]

matthias26 3 Messages postés samedi 17 décembre 2005Date d'inscription 17 juillet 2007 Dernière intervention - 16 juil. 2007 à 12:03 - Dernière réponse : matthias26 3 Messages postés samedi 17 décembre 2005Date d'inscription 17 juillet 2007 Dernière intervention
- 17 juil. 2007 à 10:14
Bonjour à tous,

Je suis confronté depuis quelques jours à un problème lors d'opération d'écriture avec des fichiers (sauvegarde après modification ou suppression).
J'obtiens tout le temps le message d'erreur : "Impossible d'accéder au fichier 'blabla', car il est en cours d'utilisation par un autre processus". J'en ai parlé autour de moi, et les gens pensent que ça peut venir de Windows qui indexe, d'un anti-virus, etc. Or même si je coupe l'indexation, et que je ferme l'antivirus, j'ai toujours ce message d'erreur.

Pour info, je supprime les fichiers simplement avec File.delete(), et la sauvegarde se fait sur des fichiers XML, la plupart du temps après avoir appelé la méthode Load de la classe XmlDocument.

Si vous savez d'où cela peut-il venir, je suis preneur.

Merci d'avance pour votre aide.
Afficher la suite 

Votre réponse

3 réponses

Meilleure réponse
matthias26 3 Messages postés samedi 17 décembre 2005Date d'inscription 17 juillet 2007 Dernière intervention - 17 juil. 2007 à 10:14
1
Merci
Bonjour,

j'ai trouvé d'où venait mon problème (après quelques heures à galérer) :
j'utilise des fichiers XML que je valide avant toute utilisation réelle. Pour cela, j'utilise un fonction piquée sur le site MSDN :

private int nb_erreur;

public bool validation(string schema, string fichier)
        {
            if (!File.Exists(schema) | !File.Exists(fichier))
            {
                return false;
            }

            XmlSchemaSet sc = new XmlSchemaSet();
            sc.Add(null, schema);
            XmlReaderSettings settings = new XmlReaderSettings();
            settings.ValidationType = ValidationType.Schema;
            settings.Schemas = sc;
            settings.ValidationEventHandler += new ValidationEventHandler(ValidationCallBack);

            XmlReader reader = XmlReader.Create(fichier, settings);
            nb_erreur = 0;
            while (reader.Read()) ;
            return (nb_erreur == 0);
        }

        // Fonction déclenché par la détection d'une erreur lors de la validation d'un ficheir XML
        private void ValidationCallBack(object sender, ValidationEventArgs e)
        {
            nb_erreur++;
        }

Or, cette fonction ne ferme jamais le fichier. D'où l'erreur.
En rajoutant un reader.Close() après la boucle while, je n'ai plus ce problème.

Merci quand pour ton aide.

Merci matthias26 1

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 102 internautes ce mois-ci

Commenter la réponse de matthias26
matthias26 3 Messages postés samedi 17 décembre 2005Date d'inscription 17 juillet 2007 Dernière intervention - 16 juil. 2007 à 12:34
0
Merci
Salut,

WhoLockMe me dit que le fichier n'existe pas... Même l'exécutable n'existe pas... Aucun fichier n'existe en fait...

Pour le coup de l'application multi-thread, je suis débutant, donc je ne me suis pas encore penché dessus.

Mais merci quand même.
Commenter la réponse de matthias26
bernie666 427 Messages postés mercredi 1 octobre 2003Date d'inscription 29 janvier 2008 Dernière intervention - 16 juil. 2007 à 12:12
-1
Merci
Salut, afin de savoir quel process utilise ton fichier je te conseil de récuperer WhoLockMe.exe :) ce petit soft va te permetre via le menu contextuel de te donner les infos que tu veux ;)
Apres si c'est ton application qui est multhi-thread et que tu attaques ce fichier c'est normal qu'il y ai un lock dessus

Bonne journée

++

-------------------------------------------http://quoideneufaujourdhui.spaces.live.com
Commenter la réponse de bernie666

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.