我正在开发一个应用程序。有时,我想彻底删除构建目录。
当我执行此操作时,我收到来自 Windows 的错误,提示我无权访问或目录中的某些文件已打开。
好吧,当我进入这个目录的层次结构时,在某个时候我可能会删除所有内容,而当我再次进入层次结构时,我可以删除所有内容,甚至是我首先想要删除的最顶层目录。
所以我可以做我想做的事,但这有点麻烦。
知道为什么 Windows 会这样表现吗?
答案1
这只是瞎猜,但我最好的猜测是,有一个后台进程会扫描你的“构建”目录中的文件,只要这个进程没有完成其任务,它就可能会阻止删除。
这可能是版本控制系统(如 TortoiseSVN 或 TortoiseGit,尝试更新 Windows 资源管理器中覆盖图标的信息)的进程,也可能是恶意软件扫描程序的进程,扫描所有新文件时会有一定的延迟。当构建生成或触及数百个文件时,延迟扫描可能需要几分钟才能完成。
答案2
如果让我大胆猜测,我会认为您没有调用.Dispose
或没有正确using
实例化文件资源。在系统重新启动后,第一次编译和运行时是否收到相同的错误消息?如果问题不存在,但第二次出现,则说明您没有正确释放资源。