我的问题与这个问题
有关我正在使用 Directory 删除一个文件夹。复制后删除并删除其中的所有文件 -> 我正在检查它的根文件夹是否包含任何文件 -> 如果不包含,也删除该根文件夹。
if (!Directory.Exists(Archivepatz))
{
Directory.CreateDirectory(Archivepatz);
foreach (string files in MatrixArchiveFiles)
{
string filetocopy = files.Split('\\').Last();
File.Copy(files, Archivepatz + filetocopy);
File.Delete(files);
}
Directory.Delete(xmlLogfilePathMatrix + MatrixArchiveDay + backslash + MatrixArchiveIP + backslash + MatrixArchiveDMC + backslash, true);
DirectoryInfo dir2 = new DirectoryInfo(xmlLogfilePathMatrix + MatrixArchiveDay + backslash);
if (!dir2.EnumerateFiles("*", SearchOption.AllDirectories).Any())
{
if (Directory.Exists(xmlLogfilePathMatrix + MatrixArchiveDay + backslash))
{
Directory.Delete(xmlLogfilePathMatrix + MatrixArchiveDay + backslash, true);
}
}
}
它在我的测试环境(我的笔记本电脑)上运行正常,但在 PC 上运行该程序时会出现链接文章中的问题 -> 它说访问被拒绝我刚刚删除的目录(该目录也可见)在 Windows 资源管理器中,但是 - 就像我的程序一样 - 也无法访问它,因为它不存在于文件系统中)。
这是我迄今为止尝试过的:
在Directory.Delete后添加了一个中断,以检查什么情况。这里我发现被删除的文件夹仍然可见,但在Windows资源管理器中无法访问。
尝试在删除和“if (!dir2.”部分之间添加一些等待时间,希望足以处理该文件夹。
尝试了链接文章中的解决方案: ” 目录.Delete(tempFolder, true); while (Directory.Exists(tempFolder)) Thread.Sleep(0); ” 这导致了永无休止的循环。
两台机器均配备Windows 10操作系统。
您知道哪个 Windows 组件/设置/策略会导致这种差异吗?
感谢您的支持!
您的程序在第二台机器上以管理员模式运行吗?
因为我遇到了非常类似的问题,并且由于我无法解释的原因,当前用户创建的目录只能由管理员帐户删除,除非我重新启动计算机(当然这在文件服务器上是不可能的^^ ')