Lutinore
Messages postés3246Date d'inscriptionlundi 25 avril 2005StatutMembreDernière intervention27 octobre 201241 6 avril 2006 à 10:35
Voilà ce que dit la doc de Image.FromFile "Le fichier reste verrouillé tant que image n'a pas été supprimé." à mons avis tu as oublié d'appeler Dispose pour un image, ( dans une fonction, une ré-allocation ou quelque chose comme ça ) du coup elle existe encore en mémoire, tant que le garbage collector n'est pas passé. Au pire avec un GC.Collect avant File.Delete ça devrait marcher.
bernie666
Messages postés427Date d'inscriptionmercredi 1 octobre 2003StatutMembreDernière intervention29 janvier 20081 5 avril 2006 à 13:52
salut
Normalement la methode File.Delete(cheminFichier); marche parfaitement ... apres, il faut que tu verifie si tu as bien les droits nécéssaire sur ce fichier ...
Pour mon cas j'ai utiliser cette méthode de nombreuses fois et je n'ai jamais eu de probleme
The process cannot access the file "old1.bmp" because it is being used by another process.
J'ai eu ce probleme entre autre, c'est pour cela que j'avais fait appel Old.Dispose() qui ne semblait pas fonctionner. Visiblement, je ne suis pas le seul a
avoir rencontrer des difficultes pour utiliser cette methode puisque
d'autres messages du forum s'y rapportent sans toutefois apporter la
solution a mon probleme.
Lutinore
Messages postés3246Date d'inscriptionlundi 25 avril 2005StatutMembreDernière intervention27 octobre 201241 6 avril 2006 à 05:13
Salut utilises tu une PictureBox ou un autre contrôle qui maintient l'image ? Si c'est le cas avant d'appeler File.Delete utilises ses deux lignes de code :
J'ai vu que tu comprenais mon probleme mais justement, les images qui
sont traites ne sont contenus dans aucun controle, elles sont juste sur
le disque dur.
En fait dans mon programme, je cree une premiere image que j'enregistre
(new1.bmp), je la compare a l'ancienne (old1.bmp), si les differences
entre les deux images depassent un certain seuil, j'enregistre
new1.bmp. Dans tous les cas, a la fin, j'enregistre new1.bmp comme
etant la nouvelle old1.bmp. C'est lors de cette derniere operation que
je dois effacer old1.bmp et qu'il me fait une erreur.
Je precise que je fais cela pour faire de la detection de mouvements.
Si vous avez une idee du pourquoi de l'erreur ou d'une autre facon de
proceder, je vous en serais tres reconnaissant.
Merci bien pour ces informations, l'erreur que j'ai faite ne peut etre
que celle que tu dis malheureusement je ne vois vraiment ou j'ai pu
oublier d'appeler Dispose().
J'ai essaye avec un GC.Collect dont je ne connaissais pas l'existence
(premier vrai programme en C# oblige nombre de decouvertes) neanmoins,
cela ne semble pas fonctionner alors que j'ai fait un GC.Collect().
Je vais me replonger dans mon code pour voir d'ou peut venir mon erreur, merci encore pour ces precieuses informations.
Merci pour tout Lutinore, grace a toi je viens de trouver l'erreur qui
etait presque sous mes yeux, mon probleme n'en est plus un et j'arrive
a detecter les mouvements et a enregistrer ces mouvements ! Merci
encore pour ton aide Lutinore.