为啥我使用 directory.delete 时 gif 文件不会删除?

Posted

技术标签:

【中文标题】为啥我使用 directory.delete 时 gif 文件不会删除?【英文标题】:Why gif file won't delete when I use directory.delete?为什么我使用 directory.delete 时 gif 文件不会删除? 【发布时间】:2020-08-21 14:51:37 【问题描述】:

我需要你的帮助来解决我的问题。

我在我的应用程序中使用 gif 文件。我可以在文件夹中添加图像(文件夹不存在时创建)。我也可以删除gif图像,文件夹将被删除。

我使用Directory.Delete(string path, bool recursive); 删除 gif 文件。以下问题是gif图像被另一个进程使用但我不知道为什么。

当我使用普通文件时,语法有效。只有当我使用 gif 文件时才会出现问题。

有人可以帮帮我吗?

【问题讨论】:

你如何检查它是否被另一个进程使用而不是你的? 我有一个 IOException 并且我的程序崩溃了 好的,但是你没有重新搜索它是否是你的进程 - 使用 handle.exe - 如果它是你的,那么也许你没有处理文件或者它是 GC 问题(尚未调用) - 如果另一个你无能为力 我检查了,不,不是这样。即使我删除了它,我的 gif 似乎也在运行 你得到的 IOException 是“System.IO.IOException: The process cannot access the file 'xyxy.gif' because it is being used by another process.”? 【参考方案1】:

您可以尝试使用“File.Delete(String path)”方法。欲了解更多信息,请访问

https://docs.microsoft.com/en-us/dotnet/api/system.io.file.delete?view=netcore-3.1

“文件”类也可用于其他 IO 操作

如果文件在另一个进程中打开,请确保在使用“File.Close()”删除文件之前关闭文件。

【讨论】:

我也试过这个解决方案,我先删除了文件,然后删除了目录,但删除文件时我遇到了同样的问题【参考方案2】:

好的,我找到了解决方案,我的图像在我的 PictureBox 的 BackgroundImage 中,但图像在删除之前不为空,因此存在混淆。我删除了 BackgroundImage = null 行,我的程序正常工作。

这不是我的程序,所以调试起来很复杂。

感谢那些帮助过我的人。

【讨论】:

以上是关于为啥我使用 directory.delete 时 gif 文件不会删除?的主要内容,如果未能解决你的问题,请参考以下文章

无法使用 Directory.Delete(path, true) 删除目录

Directory.Delete(folder) 和 Directory.Delete(folder, false) 有啥区别?

在Directory.Delete Directory.Exists有时返回true?

32.Directory类

32.Directory类

Directory 文件夹操作