无法删除文件,因为它正被另一个进程使用 - 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)

感谢大家的帮助!