2010-01-16 3 views
6

Öffnen Ich habe diesen Code:nicht in der Lage Bild zu löschen, nachdem es in vb.net App

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

Und ich kann die Datei nicht löschen, obwohl ich es in einen Bildrahmen geladen haben. Wenn ich diese Zeile hinzu:

xx.dispose 

das Bildfeld wird ein großes rotes X.

Ich möchte nur die Bilder löschen, wenn meine Anwendung zu schließen (sie sind temporäre Dateien). Soll ich sie einfach entsorgen, bevor ich sie lösche?

+0

Ja benötigen, sie verfügen, bevor Sie sie löschen. Das gibt die Sperre für die Datei frei. –

+0

xx.Image.Dispose() –

Antwort

12

Verwenden Sie nicht Image.FromFile, es hält die Datei geöffnet.

From MSDN:

Die Datei, bis das Bild angeordnet ist, verriegelt bleibt.

Sie, dass statt:

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

Die Datei geschlossen wird, nachdem das Bild geladen wird, so dass Sie die Datei löschen können, wenn Sie

+0

Das hilft nicht, es ist immer noch mit der gleichen Datei verbunden. –

+0

Nein, es ist nicht ... das Image ist nur mit dem Stream verbunden, der am Ende des Using-Blocks geschlossen ist. Es kennt nicht einmal den Dateinamen ... Ich benutze diese Technik seit einiger Zeit und ich bin mir sicher, dass es gut funktioniert. –

+0

Maybe str.Close() –

Verwandte Themen