无法删除文件,因为它正被另一个进程使用 - VB.net
Cannot delete file because it is being used by another process - VB.net
我正在 vb.net 中将 TIFF 文件转换为 .PNG 文件。首先,我将 TIFF 文件保存到特定位置(由 NewFileName 指定)。然后我使用 Bitmap.Save 方法将文件转换为 .PNG。稍后在我的程序中,我尝试删除所有 .tif 文件。但是,我收到一条错误消息,指出这些文件仍在使用中。我已经对此原因进行了一些研究,并且我读到很多错误来自未关闭文件流。但是,我没有在我的程序中使用文件流,所以我认为它是另外一回事。建议的另一种可能性是文件被打开了两次。我已经搜索了我的代码,我很确定这些文件从未打开过,只是通过 bitmap.Save
命令保存和访问。我还下载了 handle.exe
和进程资源管理器来查找锁定文件的进程。显然,只有在我使用 bitmap.save
命令将它们转换为 PNG 后,这些文件才会被程序使用。也许有办法关闭bitmap.Save
?任何其他关于添加内容的建议也将不胜感激。
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)
提前致谢!
我明白了。您只需要一个 using 语句,以便 NewFileName
在我删除它之前被释放。我将代码更改为此并且有效:
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)
感谢大家的帮助!
我正在 vb.net 中将 TIFF 文件转换为 .PNG 文件。首先,我将 TIFF 文件保存到特定位置(由 NewFileName 指定)。然后我使用 Bitmap.Save 方法将文件转换为 .PNG。稍后在我的程序中,我尝试删除所有 .tif 文件。但是,我收到一条错误消息,指出这些文件仍在使用中。我已经对此原因进行了一些研究,并且我读到很多错误来自未关闭文件流。但是,我没有在我的程序中使用文件流,所以我认为它是另外一回事。建议的另一种可能性是文件被打开了两次。我已经搜索了我的代码,我很确定这些文件从未打开过,只是通过 bitmap.Save
命令保存和访问。我还下载了 handle.exe
和进程资源管理器来查找锁定文件的进程。显然,只有在我使用 bitmap.save
命令将它们转换为 PNG 后,这些文件才会被程序使用。也许有办法关闭bitmap.Save
?任何其他关于添加内容的建议也将不胜感激。
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)
提前致谢!
我明白了。您只需要一个 using 语句,以便 NewFileName
在我删除它之前被释放。我将代码更改为此并且有效:
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)
感谢大家的帮助!