2010-01-16 12 views
6

ho questo codice:in grado di eliminare l'immagine dopo l'apertura in app vb.net

Dim xx as image 
xx = image.fromfile(Fileloc) 
picturebox.image = xx 

e non riesco a eliminare il file anche se ho caricato in una finestra di immagine. Se posso aggiungere questa riga:

xx.dispose 

la casella di immagine diventa un grande X rossa

voglio solo per cancellare le immagini quando la mia applicazione sta chiudendo (sono file temporanei). Quindi dovrei eliminarli prima che li elimini?

+0

Sì, disporle prima di eliminarli. Questo rilascia il blocco sul file. –

+0

xx.Image.Dispose() –

risposta

12

Non utilizzare Image.FromFile, mantiene il file aperto.

From MSDN:

Il file rimane bloccato fino a quando l'immagine è disposto.

farlo invece:

Dim xx as Image 
Using str As Stream = File.OpenRead(Fileloc) 
    xx = Image.FromStream(str) 
End Using 
picturebox.Image = xx 

Il file viene chiuso dopo che l'immagine è stata caricata, in modo da poter eliminare il file se è necessario

+0

Ciò non aiuta, è ancora associato allo stesso file. –

+0

No, non è ... l'Immagine è solo associata allo stream, che viene chiuso alla fine del blocco Using. Non sa nemmeno il nome del file ... Ho usato questa tecnica per un po 'di tempo e sono certo che funzioni bene. –

+0

Forse str.Close() –