2016-05-24 8 views
0

Ich konvertiere eine TIFF-Datei in eine .PNG-Datei in vb.net. Zuerst speichere ich die TIFF-Datei an einem bestimmten Speicherort (gegeben durch NewFileName). Dann konvertiere ich die Datei mit der Bitmap.Save-Methode in .PNG. Später in meinem Programm versuche ich, alle .tif-Dateien zu löschen. Ich bekomme jedoch einen Fehler, der besagt, dass die Dateien noch verwendet werden. Ich habe einige Nachforschungen über die Gründe dafür angestellt und ich habe gelesen, dass viele der Fehler davon herrühren, Filestream nicht zu schließen. Allerdings verwende ich Filestream nicht in meinem Programm, also denke ich, dass es etwas anderes ist. Eine andere Möglichkeit, die vorgeschlagen wurde, war, dass die Datei zweimal geöffnet wurde. Ich habe meinen Code durchforstet und bin mir ziemlich sicher, dass die Dateien nie geöffnet, nur gespeichert und mit dem Befehl bitmap.Save zugegriffen wurden. Ich habe auch handle.exe heruntergeladen und Explorer verarbeitet, um herauszufinden, welcher Prozess die Dateien gesperrt hat. Anscheinend werden die Dateien nur dann vom Programm verwendet, wenn ich sie mit dem Befehl bitmap.save in PNG umwandle. Vielleicht gibt es eine Möglichkeit, bitmap.Save zu schließen? Alle anderen Vorschläge, was hinzugefügt werden sollte, würden ebenfalls geschätzt werden.Datei kann nicht gelöscht werden, da sie von einem anderen Prozess verwendet wird - VB.net

objApplication.StartCommand(SolidEdgeConstants.AssemblyCommandConstants.AssemblyViewBottomView) 
    view = window.View 
    view.Fit() 
    withoutExt = "C:\Folder" & "\" & shortForms(12) & FileName 
    NewFileName = withoutExt & ".tif" 
    view.SaveAsImage(NewFileName, Width:=width, Height:=height, Resolution:=resolution, ColorDepth:=colorDepth) 
    System.Drawing.Bitmap.FromFile(NewFileName).Save(withoutExt & ".png", System.Drawing.Imaging.ImageFormat.Png) 

Vielen Dank im Voraus!

+0

Können Sie den Code teilen, wo Sie zuerst das TIFF öffnen? –

+0

@robin Es tut mir leid, dass meine Frage irreführend war. Ich öffne nie direkt das TIFF, ich greife einfach mit dem Befehl .saveasimage und dem Befehl bitmap.save darauf zu. Ich werde die Frage bearbeiten. –

+0

@robin Ich habe den Beitrag bearbeitet und eingeschlossen, dass die Dateien vom Befehl bitmap.save gesperrt wurden. Vielleicht hilft das. –

Antwort

0

Ich fand es heraus. Alles, was Sie brauchen, ist eine using-Anweisung, so dass NewFileName freigegeben wird, bevor ich es lösche. Ich änderte den Code zu diesem und es funktionierte:

view = window.View 
    view.Fit() 
    withoutExt = ChosenFile & "\" & shortForms(13) & FileName 
    NewFileName = withoutExt & ".tif" 
    view.SaveAsImage(NewFileName, Width:=width, Height:=height, Resolution:=resolution, ColorDepth:=colorDepth) 
    Using tempImage = System.Drawing.Bitmap.FromFile(NewFileName) 
     tempImage.Save(withoutExt & ".png", System.Drawing.Imaging.ImageFormat.Png) 
    End Using 
    My.Computer.FileSystem.DeleteFile(NewFileName) 

Vielen Dank für Ihre Hilfe!

Verwandte Themen