matthias26
Messages postés3Date d'inscriptionsamedi 17 décembre 2005StatutMembreDernière intervention17 juillet 2007
-
16 juil. 2007 à 12:03
matthias26
Messages postés3Date d'inscriptionsamedi 17 décembre 2005StatutMembreDernière intervention17 juillet 2007
-
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.
matthias26
Messages postés3Date d'inscriptionsamedi 17 décembre 2005StatutMembreDernière intervention17 juillet 20072 17 juil. 2007 à 10:14
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);
// 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.
bernie666
Messages postés427Date d'inscriptionmercredi 1 octobre 2003StatutMembreDernière intervention29 janvier 20081 16 juil. 2007 à 12:12
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