Добрый день!
Столкнулся со странной проблемой при попытке программно очистить папку.
Поскольку 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, помогите!