Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Блокируются папки при рекурсивном удалении 
:(
    Опции темы
Bekass
Дата 6.2.2013, 12:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 73
Регистрация: 21.12.2005

Репутация: нет
Всего: нет



Доброго дня. Есть  Web service,  в нем рекурсивная функция удаления  папки, вместе с вложенными в нее папками и файлами. 

Удаление делаю через kernel32.dll

Код


   public static void DeleteDir(string directory)
        {
           
            WIN32_FIND_DATA findData;

            IntPtr findHandle = FindFirstFile(directory + @"\*", out findData);

            if (findHandle != INVALID_HANDLE_VALUE)
            {
                bool found;

                do
                {
                    string currentFileName = findData.cFileName;
                    try
                    {
                        if (((int)findData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) != 0)
                        {
                            if (currentFileName != "." && currentFileName != "..")
                            {
                                SetFileAttributes(directory + "\\" + currentFileName, 0);
                                DeleteDir(directory + "\\" + currentFileName);
                            }
                        }
                        else
                        {
                            SetFileAttributes(directory + "\\" + currentFileName, 0);
                            //System.WindowsNT.IO.NtFile.Delete(@"\DosDevices\" + directory + "\\" + currentFileName);
                            File.DeleteFile(directory + "\\" + currentFileName);
                        }
                        
                    }
                    catch (Exception e)
                    {
                        LogWrite("DELETE ERROR " + @"\DosDevices\" + directory + "\\" + currentFileName);
                    }
                    found = FindNextFile(findHandle, out findData);
                }
                while (found);
            }
            FindClose(findHandle);
            File.DeleteFolder(directory);
            //System.WindowsNT.IO.NtFile.Delete(@"\DosDevices\" + directory);
            
        }
 [DllImport("kernel32.dll")]
        [return: MarshalAs(UnmanagedType.Bool)]
        static extern bool RemoveDirectory(string lpPathName);

 [DllImport("kernel32.dll", CharSet = CharSet.Unicode)]
        [return: MarshalAs(UnmanagedType.Bool)]
        internal static extern bool DeleteFile(string lpFileName);



Проблема в том что иногда (следствия обнаружить не могу)  IIS   не удаляет папку а блокируе Access Denided,  до тех пор пока не перезапускаю IIS , После перезапуска папки сами удаляюся.

В чем  может быть проблема, есть ли способы удалять такие файлы ?

Спасибо.

Это сообщение отредактировал(а) Bekass - 6.2.2013, 12:20
PM MAIL   Вверх
Machaon
Дата 9.2.2013, 16:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


КаРолЬ АсьКи МуАЛя
*


Профиль
Группа: Участник
Сообщений: 160
Регистрация: 12.8.2008
Где: М.о. Красногорск

Репутация: 3
Всего: 3



Если ты сам писал функцию или класс в котором ты работаешь с этими файлами, то наверняка ты просто не закрываешь поток в котором открываешь файл или присутствуют события при котором закрытие не обрабатывается.
 Проверь с помощью try cath.
PM MAIL ICQ Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




[ Время генерации скрипта: 0.0422 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.