Исключения при очистке папки
От: Iron_droid Россия  
Дата: 28.08.10 10:53
Оценка:
Добрый день!

Столкнулся со странной проблемой при попытке программно очистить папку.

Поскольку DirectoryInfo.Delete(true) работает нестабильно (http://allen-conway-dotnet.blogspot.com/search/label/Delete%20Files), очищаю рекурсивно:


//FolderAddress - папка, которую нужно очистить, не удаляя

DirectoryInfo DirToCleanup = new DirectoryInfo(FolderAddress); 

// Delete all the files from the directory
foreach (FileInfo FileToDelete in DirToCleanup.GetFiles())
{
    FileToDelete.IsReadOnly = false;
    FileToDelete.Delete();
}

// Recursively cleanup all the subdirectories and delete them
DirectoryInfo[] Subdirs = DirToCleanup.GetDirectories();
foreach (DirectoryInfo DirToDelete in DirToCleanup.GetDirectories())
{
    FolderCleanup(DirToDelete.FullName);
    DirToDelete.Delete();
}


Работает всё нормально — очищает и файлы, и папки, в том числе и read-only.

Но время от времени DirToDelete.Delete(); (вызванная для уже полностью очищенной подпапки) выкидывает System.IO.IOException (Отказано в доступе по пути).

Проявляется ошибка для очень малого количества папок, но для тех папок, для которых проявляется, исключение кидается в 100% случаев. То же самое — для копий этих папок. Папки не держит никто. Права доступа — точно такие же, как у успешно удаляемых папок. Переименование папок ни на что не влияет.

Выставлять разрешения — пытался (new FileIOPermission(FileIOPermissionAccess.Read | FileIOPermissionAccess.Write, DirToDelete.FullName).Demand() — проходит без ошибок, но не помогает.

Ось — Windows 7

Собственно, идей нет. Знатоки .NET, помогите!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.