Fichier occupé par un processus file.delete()

Résolu
coulis Messages postés 121 Date d'inscription lundi 20 octobre 2003 Statut Membre Dernière intervention 24 juin 2010 - 9 mars 2007 à 15:47
coulis Messages postés 121 Date d'inscription lundi 20 octobre 2003 Statut Membre Dernière intervention 24 juin 2010 - 21 mars 2007 à 16:04
Bonjour, à tous

J'ai l'erreur suivante lorsque je souhaite effacer des fichiers "jpg" sur un dossier ayant toutes les autorisations.

"Le processus ne peut pas accéder au fichier xxxxxxxx car il est en cours d'utilisation par un autre processus."

Remarque : avant d'éffacer les fichiers j'ai crée des images redimensionnées et sauvegarder ous un autre nom.

Voici mon code :

Private
Sub CreatImg(
ByRef RefInt
As
String,
ByRef RefAnno
As
String,
ByRef image
As
Integer,
ByRef imageB
As
Integer,
ByRef Lmage
As
Integer)

' On va fournir une image avec une hauteur et Largeur X et Y, et fixer la largeur de la miniature (en pixel),

'RefInt 'nom de l'image initiale

'RefAnno 'Référence LM de l'annonce VO

'Lmage 'On fixe la largeur de l'image

'image 'nombre de photo pour ce VO

'imageB 'nombre de photo encours pour ce VO

Dim MonRepertoirePhysique
As
String = Application("CheminAppli") & "\images"
'chemin de stockage des photos
Dim di
As DirectoryInfo =
New DirectoryInfo(MonRepertoirePhysique)

Dim fi
As FileInfo()
fi = di.GetFiles(RefInt & "_*" & "_" & FormatImg & ".jpg")
' images planetVO

If fi.Length > 0
Then

   Dim fi2
As FileInfo

   Dim TabImage(image)
As
String
'Création d'un tableau pour inscrire le nom des images éxistantes

   Dim i
As
Integer = imageB + 1

   For
Each fi2
In fi 
'Récupération des images du VO
         TabImage(i) = fi2.Name
'Inscription dans le tableau
           i += 1

   Next

Dim HauteurImage
As
Integer
'Pour ernregistrer la hauteur calculée de l'image

      For i = imageB + 1
To image
'Création des miniatures
         Dim bmp
As
New System.Drawing.Bitmap(MonRepertoirePhysique & TabImage(i))

            '
la hauteur de la miniature se calcule alors en proportion
            HauteurImage = (bmp.Size.Height * Lmage / bmp.Size.Width)
'la Hauteur est calculée
             bmp = bmp.GetThumbnailImage(Lmage, HauteurImage,
Nothing, IntPtr.Zero)
            bmp.Save(MonRepertoirePhysique & RefAnno & "-" & i & ".jpg", System.Drawing.Imaging.ImageFormat.Jpeg)
' Sauvegarde de l'image
            bmp.Dispose()

      Next

End
If

End
Sub

'Suppression des images originales importées

Private
Sub SupImgImport(
ByVal RefInt
As
String)

Dim di
As
New DirectoryInfo(Application("CheminAppli") & "\images")

Dim fi
As FileInfo()fi = di.GetFiles(RefInt & "_*" & "_" & FormatImg & ".jpg")

' image planetVO
'If fi.Length 0 Then fi di.GetFiles("*_" & RefInt & "_*.jpg") ' image dcs

Dim fi2
As FileInfo

If
Not ((fi2.Attributes
And FileAttributes.ReadOnly) = 0)
Thenfi2.Attributes = fi2.Attributes

And
Not FileAttributes.ReadOnly

End
If

For
Each fi2
In fi     ' l'erreur se produit ici ou ...
fi2.Delete()  ' l'erreur se produit ici.

Next

End
Sub
Merci d'avance pour vos conseils éclairés

Thierry

3 réponses

jesusonline Messages postés 6814 Date d'inscription dimanche 15 décembre 2002 Statut Membre Dernière intervention 13 octobre 2010 29
9 mars 2007 à 18:58
Bonjour, 

         Dim bmp AsNew System.Drawing.Bitmap(MonRepertoirePhysique & TabImage(i))

            '
la hauteur de la miniature se calcule alors en proportion
            HauteurImage = (bmp.Size.Height * Lmage / bmp.Size.Width)
'la Hauteur est calculée
             bmp = bmp.GetThumbnailImage(Lmage, HauteurImage, Nothing, IntPtr.Zero)
            bmp.Save(MonRepertoirePhysique & RefAnno & "-" & i & ".jpg", System.Drawing.Imaging.ImageFormat.Jpeg)
' Sauvegarde de l'image
            bmp.Dispose()

l'erreur est là ! Ici tu manipules 2 objets Bitmap mais t'en dispose qu'un seul ! Donc créer une nouvelle variable dee type Bitmap et récuperer le Thumbmail dans ce niveau bitmap comme ca tu pourras faire un dispose des deux !

<hr />Cyril - MSP - MCTS ASP.net & SQL
3
coulis Messages postés 121 Date d'inscription lundi 20 octobre 2003 Statut Membre Dernière intervention 24 juin 2010
11 mars 2007 à 08:58
Merci Cyril, je vais essayer et je te tiens au courant.
A+

Thierry
0
coulis Messages postés 121 Date d'inscription lundi 20 octobre 2003 Statut Membre Dernière intervention 24 juin 2010
21 mars 2007 à 16:04
réponse tardive, désolé

En effet maintenant tout fonctionne.

Merci encore

Thierry
0
Rejoignez-nous