Fermer une image après l'avoir charger avec System.Drawing.Bitmap.FromFile

cs_lionel4 Messages postés 129 Date d'inscription samedi 29 novembre 2003 Statut Membre Dernière intervention 26 septembre 2008 - 25 janv. 2006 à 18:06
 Utilisateur anonyme - 25 janv. 2006 à 18:29
Salut à tous,

Je suis confronté à un problème qui doit être tout bête mais je n'ai pas trouver comment faire.
Basiquement, j'ai beaucoup d'images dans un seul dossier. Je les charge une à une dans une ImageList pour les réutiliser après dans une ListView. Plus tard dans l'execution du programme, je fais des opérations avec les fichiers, dont un déplacement et là, impossible d'agir car le fichier est en cours d'utilisation par un programme (j'imagine le mien).

Voici le code avec lequel je charge les images, j'imagine qu'il doit y avoir une commande à ajouter pour fermer le fichier après l'avoir ouvert.



Dim MF
As MainForm = MainForm.ActiveForm

Dim Image
As System.Drawing.Image,
FF
As
String



'Load Pictures
MF.PlaneteList.Enabled =
False
MF.ImageList1.Images.Clear()



'Pour chaque fichier, on charge l'image dans la liste
For
Each FF
In IO.Directory.GetFiles(Path & "\planeten")
Image = System.Drawing.Bitmap.FromFile(FF)
MF.ImageList1.Images.Add(Image)
MF.PlaneteList.Items.Add(FF.Substring(FF.LastIndexOf("") + 1), Index)

'Evite de tout faire freezer
Application.DoEvents()

Next FF

MF.PlaneteList.LargeImageList = MF.ImageList1
MF.PlaneteList.Refresh()
MF.PlaneteList.Enabled =
True

3 réponses

Utilisateur anonyme
25 janv. 2006 à 18:29
Bonsoir,

Rajoute Image.Dispose() pour la décharger

[...]
'Evite de tout faire freezer
Application.DoEvents()
Image.Dispose()
Next FF
[...]

Kenji

Merci de cliquer sur "Réponse acceptée" si une réponse vous convient.
1
crenaud76 Messages postés 4172 Date d'inscription mercredi 30 juillet 2003 Statut Membre Dernière intervention 9 juin 2006 28
25 janv. 2006 à 18:22
Salut,

Peut-être que faire un "Image = Nothing" après le "Next FF" suffirait ?
si ton objet FF n'est pas détruit en fin de boucle, il "pointe" toujours vers la dernière image trouvé par le "For Each" et donc bloque le fichier.
Le fait de lui affecté la valeur Nothing permettra peut-être de libérer le fichier.

C'est vraiment à tout hasard ...

CR
0
crenaud76 Messages postés 4172 Date d'inscription mercredi 30 juillet 2003 Statut Membre Dernière intervention 9 juin 2006 28
25 janv. 2006 à 18:25
Ce que je t'ai proposé doit être bon car un coup d'oeil dans la MSDN pour la méthode FromFile() indique que ...
"Le fichier reste verrouillé tant que l'objet Image n'a pas été supprimé."

Je pense que mon intuition était bonne ...

CR
0
Rejoignez-nous