Problema con cancellazione file

martedì 03 gennaio 2006 - 10.34

valezz Profilo | Newbie

Ciao a tutti e buon anno!

Ho piccolo problema con la cancellazione di un file.
Questo file è una immagine che assegno ad un picturebox tramite la chiamata:

PictureBoxImmagine.Image = Image.FromFile(_percorso_img & "image.jpg")

successivamente clicco su un button che mi scatena la seguente porzione di codice:

File.Delete(_percorso_img & "image.jpg")

Se non associo l'immagine al picture box non ci sono problemi, il file viene rimosso perfettamente.
Associandolo mi dice che il file è usato da un altro processo.
Quindi il problema è la chiamata image.fromfile
Come posso fare per liberare il file dopo aver associato l'immagine al picturebox?


Cteniza Profilo | Guru

Prova a mettere a nothing l'image prima di cancellare il file


valezz Profilo | Newbie

ho provato sia a mettere PictureBoxImmagine.Image = nothing che ad associare un'altra immagine ma nn cambia nulla!

Cteniza Profilo | Guru

Prova la seguente cosa:
Nel blocco che utilizzi per caricare l'immagine definisci una variabile di tipo immagine (new).
Carica il bitmap sull'immagine
Carica l'immagine sulla picture
Annulla la variabile immagine



valezz Profilo | Newbie

ciao, ho provato così ma senza risultati:

Dim _image As Image
_image = Image.FromFile(_percorso_img & "image.jpg")
PictureBoxImmagine.Image = New Bitmap(_image)
_image = Nothing

sempre il solito problema..anche se provo a eliminare il file manualmente dalla cartella mi dice che è usato da un'altro processo, devo chiudere l'applicazione per sbloccarlo!


valezz Profilo | Newbie

credo di aver svelato il mistero:
"Image.FromFile keeps the file open. Get the file using a file stream and use Image.FromStream then explicitly close the stream."
Provo e ti faccio sapere!

valezz Profilo | Newbie

funziona!

scrivo il codice che potrebbe essere di aiuto a qualcuno:

Dim _image As Stream
_image = File.OpenRead(_percorso_img & "image.jpg")
PictureBoxImmagine.Image = Image.FromStream(_image)
_image.Close()

:-)


Cteniza Profilo | Guru

Molto bene, sono contento che vengano pubblicate le soluzioni :)

valezz Profilo | Newbie

piccolo fix:

Dim _image As Stream
_image = File.OpenRead(_percorso_img & "image.jpg")
PictureBoxImmagine.Image = new bitmap(Image.FromStream(_image))
_image.Close()

Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5