Błąd w trakcie usuwania folderów

0

Dziwną sytuację mam. Muszę pousuwać trochę folderów. Niestety, raz na jakiś czas, wyrzuca wyjątek "Katalog nie jest pusty" - mimo, iż wywołuje Delete z argumentem recursive = true:

DirectoryInfo dir = new DirectoryInfo("....");
if (dir.Exists) dir.Delete(true);

Skoro nie pusty, to pomyślałam, że chyba coś nie tak z tą rekursją, i napisałam własną:

private void DeleteDirectory(DirectoryInfo dir)
        {
            if (dir.Exists)
            {
                foreach (DirectoryInfo subdir in dir.GetDirectories())
                {
                    DeleteDirectory(subdir);
                }
                foreach (FileInfo file in dir.GetFiles())
                {
                    file.Delete();
                }
                if (dir.Exists) dir.Delete(true);
            }
        }

Mimo to wciąż zdarza się, że dostanę ten sam błąd.
Magia jakaś czy coś?

Szukając w google'ach natrafiłam na info, że generalnie wyjątek jest rzucany błędny, i że tak naprawdę chodzi o niezwolniony uchwyt do folderu. ALE - te foldery naprawdę są puste. Nikt z nich nie korzysta, poza właśnie tym programikiem, który próbuje je usuwać. A nawet jeśli korzysta - to ja bym chciała mimo to usunąć te foldery. Ma ktoś pomysł, jak wymusić puszczenie uchwytu? Albo inny pomysł, skąd takie głupie zachowanie?

Krótko mówiąc, potrzebna mi funkcja, która usunie folder choćby nie wiem co....

A, dodam jeszcze, że zazwyczaj po rzuceniu wyjątku, wystarczy programik odpalić drugi raz - i wtedy usuwa bez problemu.

0

Nie bez powodu powstały programy typu unlocker.
Czy kiedy dostajesz komunikat, że folder jest niepusty (chociaż jest pusty), to możesz go usunąć ręcznie?

1 użytkowników online, w tym zalogowanych: 0, gości: 1