Fermeture d'un fichier

cs_lamiae2 Messages postés 50 Date d'inscription dimanche 2 décembre 2007 Statut Membre Dernière intervention 22 avril 2009 - 8 mai 2008 à 12:33
cs_lamiae2 Messages postés 50 Date d'inscription dimanche 2 décembre 2007 Statut Membre Dernière intervention 22 avril 2009 - 8 mai 2008 à 22:02
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

yassinebennani Messages postés 249 Date d'inscription samedi 13 octobre 2007 Statut Membre Dernière intervention 2 mai 2014
8 mai 2008 à 13:07
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)
0
cs_lamiae2 Messages postés 50 Date d'inscription dimanche 2 décembre 2007 Statut Membre Dernière intervention 22 avril 2009
8 mai 2008 à 13:32
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!!
0
bubbathemaster Messages postés 339 Date d'inscription dimanche 26 janvier 2003 Statut Membre Dernière intervention 25 mars 2009 4
8 mai 2008 à 16:37
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();
0
cs_lamiae2 Messages postés 50 Date d'inscription dimanche 2 décembre 2007 Statut Membre Dernière intervention 22 avril 2009
8 mai 2008 à 20:06
merci ,mais ceui ne me rends aucun résultat. j'ai essayé de faire une ouverture exclusive mais ça marche pas!
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
bubbathemaster Messages postés 339 Date d'inscription dimanche 26 janvier 2003 Statut Membre Dernière intervention 25 mars 2009 4
8 mai 2008 à 20:35
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.
0
cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
8 mai 2008 à 21:00
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
*/
0
cs_lamiae2 Messages postés 50 Date d'inscription dimanche 2 décembre 2007 Statut Membre Dernière intervention 22 avril 2009
8 mai 2008 à 22:02
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
0
Rejoignez-nous