Как удалить общую папку с помощью кода C#, если каталог открыт на другом компьютере?

Я пытаюсь удалить пустой общий каталог, который открыт на другом компьютере. Если я удалю каталог напрямую (щелкните правой кнопкой мыши и удалите), он будет удален.

Stopwatch st = new Stopwatch();
        st.Start();
 while(true){
            try
            {
                Directory.Delete(pathToDelete, true);
                Console.WriteLine("Directory Deleted" + "Elapsed time:" + st.Elapsed.Seconds.ToString() + "sec");
                break;
            }
            catch (Exception e)
            {
                if ((e is System.IO.IOException) || (e is System.UnauthorizedAccessException) ||
                    (e is System.Reflection.TargetInvocationException))
                {
                    Console.WriteLine(e.ToString());
                    if (st.Elapsed > TimeSpan.FromMinutes(5))
                    {
                        Console.WriteLine("Can not delete directory ");
                        return;
                    }

                    Thread.Sleep(1000);
                }
                else
                {
                    throw;
                }
            }
        }

Он не удаляет каталог, если каталог открыт на одном или другом компьютере с использованием общего пути.

Я нашел это, но я не мог правильно понять код.

Кто-нибудь предлагает лучший метод? Заранее спасибо

1 ответ

System.IO.IOException: процесс не может получить доступ к файлу 'c:\dir', потому что он используется другим процессом

Это означает, что он используется, поэтому вы не сможете его удалить. Если оно пустое, как вы говорите, то оно должно быть либо a) использовано кем-то из общего сетевого ресурса, либо на сервере запущено что-то, что запускается с этого сервера и отслеживает его. Возможно, вам придется остановить службу.

Другие вопросы по тегам