Fermeture d'un fichier

Signaler
Messages postés
50
Date d'inscription
dimanche 2 décembre 2007
Statut
Membre
Dernière intervention
22 avril 2009
-
Messages postés
50
Date d'inscription
dimanche 2 décembre 2007
Statut
Membre
Dernière intervention
22 avril 2009
-
j'ai un problème l'hors de suppression d'un fichier .sdf, le message d'erreur est le suivant:"Le processus ne peut pas accéder au fichier car il est utilisé par un autre processus."
j'ai essaiyé avec le code suivant mais le message reste le même:

SqlCeConnection connexion =
new
SqlCeConnection(
"Data source =data.sdf");

if (connexion.State !=
ConnectionState.Closed){
connexion.Close();

File.Delete(
"oms.sdf");}
si quelqu'un à une idée n'hésitez pas à m'aider et merci d'avance.

7 réponses

Messages postés
249
Date d'inscription
samedi 13 octobre 2007
Statut
Membre
Dernière intervention
2 mai 2014

essay
connexion.Dispose();
connexion.Close();
connexion = null;
File.Delete("oms.sdf");

Les fins justifient les moyens_________________________________________________
Yassine BENNANI - Ingénieur en génie logiciel & multimédia (Consultant SI)
Messages postés
50
Date d'inscription
dimanche 2 décembre 2007
Statut
Membre
Dernière intervention
22 avril 2009

j'ai essaiyé pas mal de fois mais le message reste le même:"Le processus ne peut pas accéder au fichier '\data.sdf', car il est utilisé par un autre processus".j'ai vérifier la connexion à la base de données je trouve qu'elle déja fermée!!
Messages postés
339
Date d'inscription
dimanche 26 janvier 2003
Statut
Membre
Dernière intervention
25 mars 2009
5
Les handle de fichiers sont des objets non managés et je pense que c'est ce qui créé l'erreur: le handle en question doit toujours être en mémoire. Essaye de forcer le GarbageCollector.
GC.Collect()
ou
GC.SuppressFinalize(connexion);
GC.WaitForPendingFinalizers();
Messages postés
50
Date d'inscription
dimanche 2 décembre 2007
Statut
Membre
Dernière intervention
22 avril 2009

merci ,mais ceui ne me rends aucun résultat. j'ai essayé de faire une ouverture exclusive mais ça marche pas!
Messages postés
339
Date d'inscription
dimanche 26 janvier 2003
Statut
Membre
Dernière intervention
25 mars 2009
5
Hum c'est assez ennuyeux car il se trouve que je devais implémenter une suppression de bdd sdf et que je suis exactement dans le même cas que toi. Si tu trouve la solution, je suis preneur.
Messages postés
6351
Date d'inscription
samedi 1 juin 2002
Statut
Modérateur
Dernière intervention
2 août 2014
92
Salut,
SqlCeConnection connexion newSqlCeConnection("Data sourcedata.sdf");
...
File.Delete("oms.sdf");

Normal que ce ne soit pas les mêmes fichiers ?
D'un autre côté avec le code donné, la suppression de fichier n'est même pas tentée car la connexion n'est pas ouverte.

Et sinon le Close aurait dû suffire, j'en déduit donc qu'il est possible qu'une autre connexion soit déjà ouverte sur la base de donnée en question, ce qui empêche du coupla suppression du fichier.

bubbathemaster : si on parle d'un handle non managé, le forçage du GC (on évite ce genre de choses, merci) ne servira à rien si la fermeture n'a pas été codée dans le finaliseur, et comme de toute façon tu as justement supprimer les finaliseurs...

/*
coq
MVP Visual C#
CoqBlog
*/
Messages postés
50
Date d'inscription
dimanche 2 décembre 2007
Statut
Membre
Dernière intervention
22 avril 2009

bonsoir;

j'ai fermé toutes les connexions ouvertes et j'ai toujours le même message d'erreurs!! que doit-je faire?

Monsieur coq (Admin CS) toutes les connexions sont fermées!! est ce que je dois ouvrir la connexion a la base pour supprimer le fichier?

meme avec le forcement des handles ca marche pas!!

merci de vos réponses