Я удаляю папку с каталогом. Удалить после копирования + удаления из нее всех файлов -> Я проверяю ее корневую папку, содержит ли она любые файлы -> если нет, удалите и эту корневую папку.
Код: Выделить всё
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);
}
}
}
Вот что Я до сих пор пробовал:
Добавил перерыв после Directory.Delete, чтобы проверить, какова ситуация. Здесь я обнаружил, что удаленная папка все еще видна, но недоступна в проводнике Windows.
Пытался добавить некоторое время ожидания между разделами удаления и разделами «if (!dir2.», надеясь на это. достаточно, чтобы удалить папку.
Попробовал это решение из связанной статьи:
"
Directory.Delete(tempFolder, true);
while ( Directory.Exists(tempFolder)) Thread.Sleep(0);
"
Это привело к бесконечному циклу.
На обеих машинах установлена операционная система Windows 10.
Имеете ли вы какие-либо идеи, какой компонент/настройка/политика Windows может вызвать такую разницу?
Спасибо за вашу поддержку!>
Подробнее здесь: https://stackoverflow.com/questions/784 ... ory-delete